腾讯云2023-02-14 22:17:11
(资料图)
以下为使用 Annotation 标明使用优雅停机示例,完整 Service Annotation 说明可参见 Service Annotation 说明。
kind: ServiceapiVersion: v1metadata: annotations: service.cloud.tencent.com/direct-access: "true" ## 开启直连 Pod 模式 service.cloud.tencent.com/enable-grace-shutdown: "true" # 表示使用优雅停机 name: my-servicespec: selector: app: MyApp
步骤2为在需要优雅停机的工作负载里配合使用 preStop 和 terminationGracePeriodSeconds。
以下为容器在 Kubernetes 环境中的终止流程:
Pod 被删除,此时 Pod 里有 DeletionTimestamp,且状态置为 Terminating。此时调整 CLB 到该 Pod 的权重为 0。kube-proxy 更新转发规则,将 Pod 从 service 的 endpoint 列表中摘除掉,新的流量不再转发到该 Pod。如果 Pod 配置了 preStop Hook ,将会执行。kubelet 将对 Pod 中各个 container 发送 SIGTERM 信号,以通知容器进程开始优雅停止。等待容器进程完全停止,如果在 terminationGracePeriodSeconds 内 (默认30s) 还未完全停止,将发送 SIGKILL 信号强制停止进程。所有容器进程终止,清理 Pod 资源。apiVersion: v1kind: Podmetadata: name: lifecycle-demospec: containers: - name: lifecycle-demo-container image: nginx lifecycle: preStop: exec: command: - /clean.sh...
关键词: