You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署K8s Deployment时,是否可实现每次仅启动一个副本?

Kubernetes Deployment 实现逐个启动副本

完全可以实现你要的需求,通过配置Deployment的滚动更新策略并配合就绪探针,就能让Kubernetes逐个启动副本,等待当前副本就绪后再启动下一个。

核心配置要点

  • 调整Deployment的滚动更新参数:设置maxSurge=1和maxUnavailable=0
    • maxSurge:限制每次部署过程中最多超出期望副本数的数量,设为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配置后:

  1. Kubernetes首先启动1个副本
  2. 等待该副本通过就绪探针,进入就绪(Ready)状态
  3. 接着启动第2个副本,重复等待就绪的流程
  4. 以此类推,直到所有5个副本都启动并就绪

这种配置在初始部署和后续版本更新时都会生效,严格保证逐个启动副本的顺序。

内容的提问来源于stack exchange,提问作者flexwang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 07:26:20