部署K8s Deployment时,是否可实现每次仅启动一个副本?
Kubernetes Deployment 实现逐个启动副本
完全可以实现你要的需求,通过配置Deployment的滚动更新策略并配合就绪探针,就能让Kubernetes逐个启动副本,等待当前副本就绪后再启动下一个。
核心配置要点
- 调整Deployment的滚动更新参数:设置
maxSurge=1和maxUnavailable=0maxSurge:限制每次部署过程中最多超出期望副本数的数量,设为1表示每次仅新增1个副本maxUnavailable:限制部署过程中允许处于不可用状态的副本数,设为0意味着必须保证所有已启动的副本都处于就绪状态,才会启动下一个新副本
- 配置就绪探针(readinessProbe):这是判断副本是否真正就绪的关键,Kubernetes会等待探针返回成功后,才会认为该副本可用,进而启动下一个副本。如果没有就绪探针,Kubernetes可能仅以容器启动完成作为就绪判断,可能不符合你的业务就绪标准。
示例配置
apiVersion: apps/v1 kind: Deployment metadata: name: your-app-deployment spec: replicas: 5 # 期望的总副本数 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 0 selector: matchLabels: app: your-app template: metadata: labels: app: your-app spec: containers: - name: your-app-container image: your-app-image:latest ports: - containerPort: 8080 # 就绪探针,根据你的业务调整检测方式 readinessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 15 # 容器启动后延迟多久开始检测 periodSeconds: 5 # 检测间隔 failureThreshold: 3 # 连续失败多少次判定为未就绪
工作原理
当你应用这个Deployment配置后:
- Kubernetes首先启动1个副本
- 等待该副本通过就绪探针,进入就绪(Ready)状态
- 接着启动第2个副本,重复等待就绪的流程
- 以此类推,直到所有5个副本都启动并就绪
这种配置在初始部署和后续版本更新时都会生效,严格保证逐个启动副本的顺序。
内容的提问来源于stack exchange,提问作者flexwang
相关产品推荐
相关产品推荐

