Kubernetes Deployment 之版本回退和灰度(金丝雀)发布

Kubernetes Deployment 之版本回退和灰度(金丝雀)发布

Deployment 版本回退

在版本发布的过程中,可能升级的版本存在问题,那么就需要版本回退。

  1. 查看指定 Deployment 版本历史

    root@k8s-master1:~# kubectl rollout history deployment deployment-nginx
    deployment.apps/deployment-nginx
    REVISION  CHANGE-CAUSE
    1         <none>
    2         <none>
    
  2. 回退至第一个发布的版本

    root@k8s-master1:~# kubectl rollout undo deployments/deployment-nginx --to-revision=1
    deployment.apps/deployment-nginx rolled back
    

灰度(金丝雀)发布

灰度(金丝雀)发布是指在滚动更新发布的过程中,我只更新部分 Pod 至新版本,然后暂停。这样系统新旧版本同时存在,待验证一定时间后认为没有问题,再继续更新剩下的 Pod 版本。我们可以将镜像k8s-test 标记为 1.2 版本,灰度发布指令和过程如下所示:

# 修改 Deployment 镜像版本,并执行灰度发布
kubectl set image deployment/deployment-nginx nginx=k8s-test:v1.2 && kubectl rollout pause deployment/deployment-nginx

# 发布过程是原本两个 Pod, 现在三个 Pod 同时运行,2 个老的和 1 个新的
^Croot@k8s-master1:~# kubectl get pods -owide -w
NAME                                READY   STATUS    RESTARTS   AGE   IP              NODE          NOMINATED NODE   READINESS GATES
deployment-nginx-78df7bbf59-x8c2l   1/1     Running   0          9s    10.244.194.70   k8s-worker1   <none>           <none>
deployment-nginx-78df7bbf59-xbk85   1/1     Running   0          8s    10.244.126.29   k8s-worker2   <none>           <none>
deployment-nginx-b44b4cc44-vh5dm    0/1     Pending   0          0s    <none>          <none>        <none>           <none>
deployment-nginx-b44b4cc44-vh5dm    0/1     Pending   0          0s    <none>          k8s-worker1   <none>           <none>
deployment-nginx-b44b4cc44-vh5dm    0/1     ContainerCreating   0          0s    <none>          k8s-worker1   <none>           <none>
deployment-nginx-b44b4cc44-vh5dm    0/1     ContainerCreating   0          0s    <none>          k8s-worker1   <none>           <none>
deployment-nginx-b44b4cc44-vh5dm    1/1     Running             0          1s    10.244.194.72   k8s-worker1   <none>           <none>
^Croot@k8s-master1:~# kubectl get pods
NAME                                READY   STATUS    RESTARTS   AGE
deployment-nginx-78df7bbf59-x8c2l   1/1     Running   0          92s
deployment-nginx-78df7bbf59-xbk85   1/1     Running   0          91s
deployment-nginx-b44b4cc44-vh5dm    1/1     Running   0          67s

# 继续发布更新
root@k8s-master1:~# kubectl rollout resume deployments/deployment-nginx
deployment.apps/deployment-nginx resumed

# 现在更新为两个新的 Pod
root@k8s-master1:~# kubectl get pods -owide -w
NAME                               READY   STATUS    RESTARTS   AGE     IP              NODE          NOMINATED NODE   READINESS GATES
deployment-nginx-b44b4cc44-htbrr   1/1     Running   0          35s     10.244.126.30   k8s-worker2   <none>           <none>
deployment-nginx-b44b4cc44-vh5dm   1/1     Running   0          3m19s   10.244.194.72   k8s-worker1   <none>           <none>
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
灰度发布、蓝绿发布金丝雀发布都是软件发布中常用的策略,用于控制新版本的上线范围和风险。 1. 灰度发布(Gray Release): 灰度发布是指将新版本的功能或者代码逐步地、部分地发布给一部分用户或者服务器,以验证新版本的稳定性和可靠性。通过逐步扩大发布范围,可以及时发现和解决问题,减少对用户的影响。在灰度发布中,可以根据不同的条件(如用户ID、地域、设备类型等)来选择参与灰度发布的用户。 2. 蓝绿发布(Blue-Green Deployment): 蓝绿发布是指在生产环境中同时部署两个完全相同的环境,一个环境为蓝色环境(Blue),另一个环境为绿色环境(Green)。初始状态下,蓝色环境对外提供服务,而绿色环境处于闲置状态。当新版本准备就绪时,先将新版本部署到绿色环境中进行测试和验证。当验证通过后,将流量切换到绿色环境,使其成为主要的生产环境,而蓝色环境则成为备份环境。这样可以实现快速回滚,降低发布风险。 3. 金丝雀发布(Canary Release): 金丝雀发布是指将新版本的功能或者代码逐步地、部分地发布给一部分用户或者服务器,以验证新版本的性能和用户体验。与灰度发布不同的是,金丝雀发布更关注新版本的性能指标和用户反馈。通过逐步增加流量,可以及时监测新版本的性能表现,并根据反馈结果决定是否继续全面发布。如果出现问题,可以快速回滚或者停止发布

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值