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

如何配置Replica Set重启限制以应对应用启动失败场景

实现需求的配置方案与说明

直接给你修改后的完整Deployment配置,对应的关键点我会逐一说明:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: apideployment
  namespace: dilshod
spec:
  # 保留历史版本,方便回滚,至少留1个旧版本
  revisionHistoryLimit: 5
  # 设置更新超时时间,10分钟内没完成更新就标记失败
  progressDeadlineSeconds: 600
  # 滚动更新策略,确保旧版本Pod始终可用,只分批启动新版本
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  selector:
    matchLabels:
      app: api_deploymentpod
  template:
    metadata:
      labels:
        app: api_deploymentpod
    spec:
      containers:
      - image: komdil/app:1.0.19
        imagePullPolicy: Always
        name: appcontainer
        ports:
        - containerPort: 80
        # 启动探针:专门检测应用启动阶段的健康状态
        startupProbe:
          httpGet:
            path: /health
            port: 80
          # 启动后每5秒检查一次
          periodSeconds: 5
          # 最多重试3次,失败后停止重启容器
          failureThreshold: 3
          # 每次检查超时时间
          timeoutSeconds: 3
        # 存活探针:检测运行中应用的状态,崩溃后触发重启
        livenessProbe:
          httpGet:
            path: /health
            port: 80
          periodSeconds: 10
          failureThreshold: 1
          timeoutSeconds: 3
        # 就绪探针:确保只有健康的Pod才会被流量访问
        readinessProbe:
          httpGet:
            path: /health
            port: 80
          periodSeconds: 5
          failureThreshold: 2
          timeoutSeconds: 3
        # 容器重启策略保持Always,运行时崩溃会一直重启
        restartPolicy: Always

关键配置的作用说明

  • 启动探针(startupProbe):
    只在应用启动阶段生效,这里设置failureThreshold: 3,如果/health端点连续3次返回非200状态,kubelet就会停止重启这个容器,正好满足你“启动失败最多重启3次”的需求。启动阶段结束后,存活探针会接管健康检查。
  • 存活探针(livenessProbe):
    应用启动成功后,每隔10秒检查一次/health状态,只要返回非OK,kubelet就会按照restartPolicy: Always的配置立刻重启容器,实现“运行时崩溃始终重启”的要求。
  • 滚动更新策略:
    maxUnavailable: 0确保更新过程中旧版本的Pod不会被销毁,maxSurge: 1限制每次只启动一个新版本Pod。如果新版本Pod启动失败(启动探针触发3次失败),Deployment会在progressDeadlineSeconds(这里设了10分钟)后标记更新失败,不会继续替换旧Pod,自动保留原有可用版本。
  • 版本历史(revisionHistoryLimit):
    保留5个历史版本,万一更新出问题,你也可以手动执行kubectl rollout undo deployment/apideployment -n dilshod快速回滚到旧版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 09:57:31