我是k8s庄园的庄园主,近期我要在我的庄园里开个party与好友来一起happy。为了能够服务好我的好友们,我首先要找到足够的服务员。于是我想到了去市场看看能不能买一些黑奴来充当服务员。
部署一个Nginx服务
目标:
- 完成Nginx服务的部署
- 观察我们创建的nginx服务
想要部署一个服务,黑奴Pod是必不可少的。Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。集群中实际'工作'的只有Pod,其他组件存在都是为了让Pod更好工作。
构建
要如何创建一个Pod呢?要知道k8s中所有资源,都可以通过一个yaml文件来描述。这里准备了一份创建Pod运行nginx的yaml。
# simple-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
- apiVersion: 声明api版本
- Kind:资源类型,这里直接使用Pod
- metadata: 资源的元数据,启动声明Pod的名称为nginx。
- spec:资源规格描述
- containers: 容器相关信息,大部分情况下,我们仅使用一个容器。实际上Pod可以启动多个容器,比如在sidecare需求下。
- image:指定容器使用的镜像。
- ports:要开启的端口 containerPort 可以类别docker暴露端口
有了这样一个描述文件,我们只需要执行下面指令即可。
kubectl apply -f simple-pod.yaml
我们会收到k8s的响应信息:
pod/nginx created
查看Pod
除了这个信息我们还能通过那些方式了解到我们创建的Pod呢?
kubectl get pods命令
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 3m58s
# 获取更详细的信息
$ kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx 1/1 Running 0 35m 10.244.0.94 debian <none> <none>
kubctl describe pod nginx查看详细描述也可以 可以看到Pod已经在运行了,但是我们要怎么指定知道运行是一个nginx呢? 直接使用网页或者curlwget访问你Pod的IP即可。
$ curl 10.244.0.94
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
至此我们的nginx Pod就部署并验证完成了。
Pod更多内容请参考官方文档。