AWS EKS(Amazon Web Services Elastic Kubernetes Service)是一种托管的 Kubernetes 服务,用于部署、扩展和管理容器化应用程序。在 AWS EKS 中,偶尔会出现容器死亡的情况,从而导致死亡容器占据着集群上的资源。为了有效地利用资源,我们需要定期清理这些死亡容器。
以下是使用 Kubernetes CronJob 设置定期清理死亡容器的示例:
创建一个 CronJob 清理死亡容器
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: clean-dead-containers
spec:
schedule: "*/10 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: clean-dead-containers
image: amazon/aws-cli:latest
command: ["/bin/sh", "-c"]
args:
- "aws eks list-tasks --cluster dead
) == true
]' | jq -r '.[]' | xargs aws eks stop-task --cluster
将上述 CronJob 文件的
创建 CronJob: kubectl apply -f clean-dead-containers.yaml
确认 CronJob 是否正常运行: kubectl get cronjob
这样一来,每 10 分钟,CronJob 都会启动一个任务,检查有哪些死亡容器占用了 EKS 集群的资源,并清理它们。