25、持续交付与Kubernetes在AWS上的部署
2026/6/8 19:58:34 网站建设 项目流程

持续交付与Kubernetes在AWS上的部署

1. 程序关闭与SIGTERM信号处理

在容器化环境中,Kubernetes只能向容器内的PID 1进程发送信号。这就可能导致一些常见问题,影响程序的优雅关闭处理。

1.1 SIGTERM未发送到应用进程

在编写Dockerfile时,有两种方式来调用程序:shell形式和exec形式。默认情况下,Linux容器中Docker容器的命令是/bin/sh -c。因此,有几个问题会影响应用是否能收到SIGTERM信号:
1. 应用是如何被调用的?
2. 镜像中使用的是哪种shell实现?
3. shell实现如何处理-c参数?

假设在Dockerfile中使用shell形式命令CMD python -u app.py来执行应用,容器的启动命令将是/bin/sh -c "python3 -u app.py"。容器启动后,其内部进程结构如下:

# the image is from "graceful_docker/Dockerfile.shell-sh" $ kubectl run --generator=run-pod/v1 \ --image=devopswithkubernetes/ch93:shell-sh my-app pod/my-app created $ kubectl exec my-app ps ax PID TTY STAT TIME

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询