简介
K8S中通过spect.strategy来定义新的 Pod 替换为旧的Pod的策略。策略类型分为:重建策略(Recreate)或滚动升级策略(RollingUpdate),默认为 RollingUpdate
两种升级策略
1.Recreate策略
在这种策略中,旧的Pods被终止,然后新的Pods被创建。这种方式简单直接,但在升级过程中会导致服务不可用。
样例
apiVersion: apps/v1 kind: Deployment metadata: name: example-deployment spec: replicas: 3 strategy: type: Recreate template: metadata: labels: app: example spec: containers: - name: example-container image: example-image:1.02. Rolling Update
用于在更新Deployment、StatefulSet、DaemonSet等资源时,逐步替换旧版本的Pod,而不是一次性全部替换。这样可以减少服务中断的风险,并允许在升级过程中监控应用的健康状况。
滚动升级的基本步骤:
定义滚动升级策略:在Deployment的spec部分,你可以定义滚动升级的相关参数。
触发滚动升级:通过更新Deployment的配置(如镜像版本),Kubernetes将开始执行滚动升级。
参数说明:
| Col1 | Col2 |
|---|---|
| 最大无效实例数(maxUnavailable) | 与spec.replicas相比,可以有多少个Pod失效,也就是删除的个数或比例,建议值是0个。比如spec.replicas为3,那升级过程中就至少有3个可用的Pod存在。 |
| 最大浪涌(maxSurge) | 与spec.replicas相比,可以有多少个Pod存在,建议值是10%。比如spec.replicas为 3,那升级过程中就不能超过4个Pod存在,即按10%(1个)的步长升级,实际升级过程中会换算成数字,且换算会向上取整。这个值也可以直接设置成个数。 |
样例
apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment spec: replicas: 3 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 # 最大额外可以存在的副本数,可以为整数或百分比 maxUnavailable: 1 # 最大不可用副本数,可以为整数或百分比 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-container image: my-image:latest通过xkube进行设置
通过多集群k8s管理平台xkube的功能可以轻松的设置更新策略,xkube安装部署参考:https://blog.csdn.net/weixin_56364253/article/details/156390146
功能参考下图: