我们创建Pod的时候一般不直接创建Pod,而是通过deployments控制器去创建Pod,先创建deployments控制器,然后deployments去自动去创建Pod。
控制器也属于资源对象,同时属于在名称空间级别下的资源,我们创建的控制器也要在一个名称空间当中
查看默认名称空间下的deploymentk控制器
kubectl get deploy
#简写
kubectl get deployment
#全写
查看指定名称空间下的所有deployment控制器
我们查看指定名称空间下的控制器需要使用 -n [namespace]
选项来指定名称空间
kubectl get deploy -n production
#简写
kubectl get deployment -n production
#全写
指定格式查看deployment控制器
1 2 3 4 5 |
#指定格式查看default名称空间下的deploy控制器 kubectl get deploy -o [yaml|json|wide|name] #指定格式查看指定名称空间下的deploy控制器 kubectl get deploy -n production -o [yaml|json|wide|name] |
创建deployment控制器
下面创建deployment控制器没有指定名称空间(默认在default名称空间中)
1 2 3 |
#创建一个名称为nginx-deploy的控制器,--image指定容器运行的镜像 kubectl create deployment nginx-deploy --image=nginx:1.14-alpine |
查看创建的deployment
这里我们查看为 -n default
指定名称空间下的 deploy/nginx-deploy
指定deploy控制器
kubectl get deploy/nginx-deploy -n default -o wide
查看被nginx-deploy控制器自动创建的pod
kubectl get pods -n default -o wide | grep nginx-deploy
销毁或删除pod
通过deployment创建的pod会被master节点的Controller组件所管理,如果我们对pod进行了删除,销毁等操作,Controller组件会立刻重建相应的pod,使其与我们期望的pod数量一致。
1 2 3 4 5 |
#删除pod, pods为资源对象 nginx-deploy-788b9c6b69-n54m7 为pod名称 kubectl delete pods/nginx-deploy-788b9c6b69-n54m7 -n default #删除pod后,我们再次查看此pod,会发现此pod已经被Controller组件重建(可以注意下pods运行时间) kubectl get pods -n default -o wide | grep nginx-deploy |
访问pod
Pod删除之后deployments控制器会再次快速生成一个一样Pod,虽然说我们执行命令进行了删除,但是控制器还会再次生成,生成后的Pod,改变了Pod名称,IP等等,但是镜像还是不变,我们无法再通过上个Pod地址访问到Pod。
我们使用 kubectl get pods -n default -o wide | grep nginx-deploy
命令可以获取到刚才创建pods的IP地址,在宿主机可直接访问。
curl http://10.244.3.10
删除deployments控制器
删除deployment控制器后,Pod也会被随之删除,不会再进行恢复
kubectl delete deploy -n default nginx-deploy
显示同一个名称空间下的多个资源对象
上面我们创建了nginx-deploy控制器,然后控制器自动创建了pod,都同隶属于default名称空间下,那么我们如何显示同一名称空间下的控制器和pod呢?
1 2 3 |
#显示多个资源对象中间使用逗号分隔即可 kubectl get pods,deploy -n default -o wide |