前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【容器TKE】K8s云服务如何实现容器优雅停止旧Pod容器服务?

【容器TKE】K8s云服务如何实现容器优雅停止旧Pod容器服务?

原创
作者头像
TCS-F
修改2023-06-07 17:01:49
4.1K0
修改2023-06-07 17:01:49
举报
文章被收录于专栏:云攻略专区云攻略专区

场景描述:

步骤1:使用 Annotation 标明使用优雅停机

以下为使用 Annotation 标明使用优雅停示例,完整 Service Annotation 说明可参见 Service Annotation 说明

代码语言:yaml
复制
kind: Service
apiVersion: v1
metadata: 
  annotations: 
    service.cloud.tencent.com/direct-access: "true" ## 开启直连 Pod 模式
    service.cloud.tencent.com/enable-grace-shutdown: "true"  # 表示使用优雅停机
  name: my-service
spec: 
  selector: 
    app: MyApp

步骤2:使用 preStop 和 terminationGracePeriodSeconds

步骤2为在需要优雅停机的工作负载里配合使用 preStop 和 terminationGracePeriodSeconds。

容器终止流程

以下为容器在 Kubernetes 环境中的终止流程:

  1. Pod 被删除,此时 Pod 里有 DeletionTimestamp,且状态置为 Terminating。此时调整 CLB 到该 Pod 的权重为 0。
  2. kube-proxy 更新转发规则,将 Pod 从 service 的 endpoint 列表中摘除掉,新的流量不再转发到该 Pod。
  3. 如果 Pod 配置了 preStop Hook ,将会执行。
  4. kubelet 将对 Pod 中各个 container 发送 SIGTERM 信号,以通知容器进程开始优雅停止。
  5. 等待容器进程完全停止,如果在 terminationGracePeriodSeconds 内 (默认30s) 还未完全停止,将发送 SIGKILL 信号强制停止进程。
  6. 所有容器进程终止,清理 Pod 资源。
具体操作步骤
  1. 使用 preStop 要实现优雅终止,务必在业务代码里处理 SIGTERM 信号。主要逻辑是不接受新的流量进入,继续处理存量流量,所有连接全部断开才退出,了解更多可参见 示例。 若您的业务代码中未处理 SIGTERM 信号,或者您无法控制使用的第三方库或系统来增加优雅终止的逻辑,也可以尝试为 Pod 配置 preStop,在其实现优雅终止的逻辑,示例如下:
代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata: 
  name: lifecycle-demo
spec: 
  containers: 
  - name: lifecycle-demo-container
    image: nginx
    lifecycle: 
      preStop: 
        exec: 
          command: 
          - /clean.sh
...

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 场景描述:
    • 步骤1:使用 Annotation 标明使用优雅停机
      • 步骤2:使用 preStop 和 terminationGracePeriodSeconds
        • 容器终止流程
        • 具体操作步骤
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档