无法删除退出的初始化容器

时间:2020-06-11 20:31:30

标签: docker kubernetes kubernetes-pod

我正在使用Kubernetes 1.15.7,而我的问题类似于https://github.com/kubernetes/kubernetes/issues/62362

apiVersion: v1
kind: Pod
metadata:
  name: init-demo
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - containerPort: 80
    volumeMounts:
    - name: workdir
      mountPath: /usr/share/nginx/html
 # These containers are run during pod initialization
 restartPolicy: Always
 initContainers:
 - name: install
   image: busybox
   command:
   - sh
   - -c
   - sleep 60
   volumeMounts:
   - name: workdir
     mountPath: "/work-dir"
 dnsPolicy: Default
 volumes:
 - name: workdir
   emptyDir: {}

在节点上,如果我发出docker container prune,则容器是运行器,它会删除已退出的busybox(初始)容器。只是重新启动它并触发Pod也重新启动。

我发现github问题与此类似,但没有太多解释。像这样,这些退出的容器在使用docker system df时不会向消费者显示出很多相同的内容,但是它不允许我在节点上整体运行prune命令。

1 个答案:

答案 0 :(得分:0)

Kubelet管理docker映像的垃圾收集,因此您不必这样做。 看看k8s documentation for more info on this topic

根据k8s文档:

垃圾收集是kubelet的有用功能,它将清除未使用的图像和未使用的容器。 Kubelet将每分钟对容器执行一次垃圾收集,每五分钟对图像进行一次垃圾收集。

不建议使用外部垃圾收集工具,因为这些工具可能会通过删除预期存在的容器来破坏kubelet的行为