Kubernetes滚动更新:在更新之前尊重Pod准备就绪

Kos*_*tos 3 kubernetes

我的部署的吊舱正在执行不应该中断的工作。K8s是否有可能正在轮询端点以了解更新准备情况,或者通知我的Pod它即将关闭,以便它可以按顺序处理事务,然后声明自己准备进行更新?

理想过程:

  1. 更新的吊舱已准备就绪,可以替换旧的吊舱
  2. k8s将请求发送到旧Pod,告知它即将更新
  3. 旧Pod被轮询有关更新准备情况
  4. 旧的Pod按顺序处理事务(例如,停止接收新任务,完成现有任务)
  5. 老豆荚说准备好了
  6. 旧豆荚被替换

syl*_*bix 6

您也许可以考虑使用容器生命周期挂钩 -在这种情况下特别是先停止。

apiVersion: v1
kind: Pod
metadata:
  name: your-pod
spec:
  containers:
  - name: your-awesome-image
    image: image-name
    lifecycle:
      postStart:
        exec:
          command: ["/bin/sh", "my-app", "-start"]
      preStop:
        exec:
          # specifically by adding the cmd you want your image to run here
          command: ["/bin/sh","my-app","-stop"]
Run Code Online (Sandbox Code Playgroud)