前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >了解Kubernetes滚动升级

了解Kubernetes滚动升级

原创
作者头像
用户7108768
修改2021-10-08 14:08:26
2440
修改2021-10-08 14:08:26
举报
文章被收录于专栏:阿林前端开发攻城狮
  1. 清空所有的Pod;
代码语言:javascript
复制
kubectl delete pods --all
  1. 这里我们采用最开始使用nginx-deployment.yaml文件;
代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        resources:
          limits:
            memory: "128Mi"
            cpu: "128m"
        ports:
        - containerPort: 80
  1. 创建deployment资源;
代码语言:javascript
复制
kubectl apply -f nginx-deployment.yaml
  1. 查看Pod执行情况;
代码语言:javascript
复制
kubectl get pods

  1. 切换镜像版本为1.9.1,这里触发滚动更新的方式有两种:一种使用kubectl edit,另外一种使用kubectl set image;
代码语言:javascript
复制
#第一种方式
kubectl edit deployment/nginx-deployment
#第二种方式
kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1
  1. 查看deployment更新过程;
代码语言:javascript
复制
kubectl rollout status deployment/nginx-deployment

  1. 再次查看Pod状况,会发现Pod,名称已经发生改变;

  1. 查看Pod使用的镜像版本,我们会发现nginx的镜像版本已经被替换为1.9.1;
代码语言:javascript
复制
kubectl describe pod/nginx-deployment-79fbcd54b4-j9n62

  1. 查看Pod更新过程,我们会发现Deployment资源的本质就是ReplicaSet,当我们创建Deployment系统会创建3个ReplicaSet,更新Deployment资源的时候会创建一个新ReplicaSet,减少一个旧版本的ReplicaSet,后续慢慢替换为新版本ReplicaSet;
代码语言:javascript
复制
kubectl describe deployment/nginx-deployment

  1. 查看ReplicaSet版本;
代码语言:javascript
复制
kubectl get rs

总结:Deployment实际上是一个两层控制器。首先,它通过 ReplicaSet 来控制应用的版本;然后,它再通过 ReplicaSet 的属性,来保证 Pod 的副本数量。

在Deployment定义中,可以通过spec.strategy指定Pod的更新策略,目前支持两种策略:

  1. Recrate(重建): 更新Pod的时候会杀掉所有在运行的Pod,然后重新创建Pod;
  2. RollingUpdate(滚动更新): 默认选项,以滚动更新的方式来逐个更新Pod,可以通过spec.strategy.rollingUpdate下面两个参数maxUnavailable和maxSurge来控制滚动更新;

maxUnavailable: 用于指定Deployment在更新过程中不可用状态Pod的上限,可以是百分比也可以是绝对值;

maxSurge: 用于指定在Deployment更新过程中Pod总数量超过期望副本的最大值,可以是百分比也可以是绝对值;从Kubernetes1.6版本开始,以上两个值的默认为25%;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档