接着上一篇介绍完k8s架构后,我们就开始学习k8s中的一个重要概念:deployment

一、部署deployment

kubectl create deployment nginx-deployment --image=nginx:1.7.9 --replicas=2

在这里插入图片描述
(最下面的events记录的是replicas的启动过程,证明了deployment可以通过replicas来管理pod)
接着我们将
使用kubectl describe replicaset查询replica的情况
在这里插入图片描述
查询各个pod的情况,先用kubectl get pod获取pod的名字,然后使用kubectl describe pod (podname)
可以看到pod的具体情况,如果有error的话,可以通过这种方法来查询具体的错误情况(描述的非常详细)
在这里插入图片描述
用户通过kubectl创建deployment->deployment创建replicaset->replicaset创建pod
如果有replica的话,就要用到replicaset,如果没有的话deployment直接动手

二、使用yaml来部署

之前我们一直是直接使用命令行直接部署deployment的,但在实际中,更多的是用yaml文件来部署,先贴上书上的栗子
在这里插入图片描述
在1中,需要通过查询支持apiVersion的版本,如果稳妥的话,在创建不同kind的yaml文件前都应该先查询。

kubectl api-resources | grep deployment

在本机查到的是
在这里插入图片描述
所以在apiVersion中需要填写apps/v1。

由于版本原因,需要在文件中加多一个标签,selector。修改后如下:
在这里插入图片描述
接着就可以成功运行了
在这里插入图片描述
其中常用的查询指令是:

kubectl get pod -o wide

三、调整replica的个数

可以直接在yaml文件中修改replicas的数量
在这里插入图片描述
再运行一次kubectl apply -f nginx.yml即可。

四、用label来控制scheduler调度的策略

我们给node1打上label,然后查询label的tag,看到已经成功打上了。
在这里插入图片描述
在yaml文件中,加上nodeSelector字段,指定要scheduler将该pod调度到有这个tag的node上。(需要注意的是,格式一定要正确,要不就不能成功识别,container和nodeSelector的缩进要一样
在这里插入图片描述
执行kubectl apply -f nginx.yaml,稍等片刻,可以看到都部署到node1上了。
在这里插入图片描述
在这里需要注意的是,即时删除了tag,pod不会重新部署,除非重新运行yaml文件。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐