Kubernetes详解(二十六)——金丝雀发布

今天继续给大家介绍Linux运维相关知识,本文主要内容是金丝雀发布。

一、金丝雀发布定义

金丝雀发布,即灰度发布,是一种Pod的发布方式。金丝雀发布采取先添加、再删除的方式,保证Pod的总量不低于期望值。并且在更新部分Pod后,暂停更新,当确认新Pod版本运行正常后再进行其他版本的Pod的更新。
Deployment控制器支持Pod的更新采取金丝雀发布的方式。今天,我们就来实际进行金丝雀发布的实战。

二、金丝雀发布实战

首先,我们先创建一个Deployment控制器,如下所示:
在这里插入图片描述
接下来,我们来设置金丝雀发布的参数,执行命令:

kubectl patch deployment deployment -p '{"spec":{"strategy":{"rollingUpdate":{"maxSurge":1,"maxUnavailable":0}}}}'

执行结果如下:
在这里插入图片描述
在上述命令中,我们给Deployment控制附加了maxSurge和maxUnavailable两个参数,将maxSurge设置为1,将maxUnavailable设置为0,使得Pod的数量可以恰好等于我们期望的数量,或者是比该数量多一个。
接下来,在参数设置完成后,我们就可以开始进行更新了,执行命令:

kubectl set image deployment deployment myapp=ikubernetes/myapp:v2 && kubectl rollout pause deployment deployment

在该命令中,前面的命令可以使得Deployment控制器更新到myapp的v2版本,在前面的命令执行成功后,会紧跟着执行后面的命令,即暂停Deployment控制器的更新。这两条命令执行结果如下:
在这里插入图片描述
在上述命令执行完毕后,我们来查看当前的Pod情况,如下所示:
在这里插入图片描述
从上图中可以看出,我们期望的Pod数量是3个,而当前的Pod数量是4个,我们查看当前Pod的具体信息,执行命令:

kubectl get pods -o custom-columns=Name:metadata.name,Image:spec.containers[0].image

该命令执行结果如下:
在这里插入图片描述
从上图中可以看出,在当前状态下,Deployment控制器下一共有四个Pod,其中一个Pod是v2版本,其余三个Pod是v1版本。
接下来,我们查看当前Deployment的更新状态,执行命令:

kubectl rollout status deployment deployment

执行结果如下:
在这里插入图片描述
从上图中可以看出,当前的Deployment控制器的更新已经完成了一个,并处于暂停的状态。此时,如果是在生产环境下,我们就处于一个新版本和老版本并存的状态,我们可以借此检验新版本Pod的运行情况。如果新版本的Pod没有问题,那么我们就可以继续进行更新,执行命令:

kubectl rollout resume deployment deployment

执行结果如下:
在这里插入图片描述
这时,我们再来查看deployment控制器的更新情况,结果如下:
在这里插入图片描述
从上图中可以看出,我们已经成功更新了deployment控制器下的Pod,此时我们再来查看一下Pod,结果如下:
在这里插入图片描述
从上图中我们可以看出,此时我们的Pod已经全部为v2版本,我们的金丝雀发布实战成功!
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

猜你喜欢

转载自blog.csdn.net/weixin_40228200/article/details/124349488