K8S RollingUpdate

RollingUpdate

apiVersion: apps/v1
kind: Deployment 
metadata: 
  name: spring-boot-probes
  labels:
    app: spring-boot-probes
spec:
  replicas: 4
  strategy:
    # 配置 滚动更新 策略
    type: RollingUpdate
    rollingUpdate:
      # 更新时增加新的 pods 数量(4 + 2 = 6)
      maxSurge: 2
      # 更新时允许最大 pods 数量不对外服务
      maxUnavailable: 1
  # 新的 pods 就绪状态观察时间。
  # 必须保证处于就绪状态的 pod 能经历一个完整的活性探测周期。
  minReadySeconds: 120
  selector:
    matchLabels:
      app: spring-boot-probes
  template:
    metadata:
      labels:
        app: spring-boot-probes
        version: v1.0.0
    spec:
      containers:
      - name: spring-boot-probes
        image: registry.cn-hangzhou.aliyuncs.com/log-service/spring-boot-probes:1.0.0
        ports:
          - containerPort: 8080
            name: http
        # resources 资源限制
        resources:
          limits:
            cpu: 500m
            memory: 400Mi
          requests:
            cpu: 200m
            memory: 200Mi
        # 就绪探针 如果探针判断失败,则不会有流量发往到这个pod。 
        readinessProbe:
          # http Get请求
          httpGet:
            path: /actuator/health
            port: 8080
          # 初始化检测时间, 指启动后30s开始探针检测
          initialDelaySeconds: 30
          # 探针探测的时间间隔为10s
          periodSeconds: 10
          # 探针探测失败后, 最少连续探测成功多少次才被认定为成功 
          successThreshold: 1
          # 探测成功后, 最少连续探测失败多少次才被认定为失败
          failureThreshold: 1
          # periodSeconds = 10s failureThreshold = 1 大约 10 秒后就不会有流量发往它
        # 活性探测 如果探针判断失败, 则会重启这个 pod。
        livenessProbe:
          # http Get请求
          httpGet:
            path: /actuator/health
            port: 8080
          # 初始化检测时间, 指启动后40s开始探针检测
          # 必须在 readinessProbe 探针检测之后
          initialDelaySeconds: 40
          # 探针探测的时间间隔为20s
          periodSeconds: 20
          # 探针探测失败后, 最少连续探测成功多少次才被认定为成功
          successThreshold: 1
          # 探测成功后, 最少连续探测失败多少次才被认定为失败
          failureThreshold: 3
          # periodSeconds = 20s failureThreshold = 3 当容器异常时, 大约 60 秒后就不会被重启。

---
apiVersion: v1 
kind: Service
metadata: 
  labels:
    app: spring-boot-probes
  name: spring-boot-probes-svc 
spec: 
  ports: 
    - port: 8080
      name: http
      targetPort: 8080
      protocol: TCP 
  selector: 
    app: spring-boot-probes

 

发表评论