【发布时间】:2021-09-15 19:25:31
【问题描述】:
在 k8s 中,pod 以名为 pause 的容器开头。
暂停容器帮助其他容器共享网络命名空间。
我知道但有一个问题。
暂停容器的生命周期是什么?
我想知道的是,当一个 pod 得到crashloopbackoff 或者暂时不起作用时,pause 容器是否也停止了?
如果没有,暂停容器是否维护自己的 Linux 命名空间?
【问题讨论】:
标签: kubernetes
在 k8s 中,pod 以名为 pause 的容器开头。
暂停容器帮助其他容器共享网络命名空间。
我知道但有一个问题。
暂停容器的生命周期是什么?
我想知道的是,当一个 pod 得到crashloopbackoff 或者暂时不起作用时,pause 容器是否也停止了?
如果没有,暂停容器是否维护自己的 Linux 命名空间?
【问题讨论】:
标签: kubernetes
当一个 pod 获得
crashloopbackoff或暂时不工作时,暂停容器是否也会停止?
没有。 CrashloopBackOff 独立于 pause 容器。我已经使用以下 yaml 在 Minikube 中使用 docker 驱动程序重现了这种情况:
apiVersion: v1
kind: Pod
metadata:
name: dummy-pod
spec:
containers:
- name: dummy-pod
image: ubuntu
restartPolicy: Always
命令kubectl get pods 为我返回:
NAME READY STATUS RESTARTS AGE
dummy-pod 0/1 CrashLoopBackOff 7 (2m59s ago) 14m
然后我已经登录到崩溃的pod所在的节点并运行docker ps:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7985cf2b01ad k8s.gcr.io/pause:3.5 "/pause" 14 minutes ago Up 14 minutes k8s_POD_dummy-pod_default_0f278cd1-6225-4311-98c9-e154bf9b42a3_0
18eeb073fe71 6e38f40d628d "/storage-provisioner" 16 minutes ago Up 16 minutes k8s_storage-provisioner_storage-provisioner_kube-system_5c3cec65-5a2d-4881-aa34-d98e1098f17f_1
b7dd2640584d 8d147537fb7d "/coredns -conf /etc…" 17 minutes ago Up 17 minutes k8s_coredns_coredns-78fcd69978-h28mp_kube-system_f62eec5a-290c-4a42-b488-e1475d7f6ff2_0
d3acb4e61218 36c4ebbc9d97 "/usr/local/bin/kube…" 17 minutes ago Up 17 minutes k8s_kube-proxy_kube-proxy-bf75s_kube-system_39dc64cc-2eab-497d-bf13-b5e6d1dbc9cd_0
083690fe3672 k8s.gcr.io/pause:3.5 "/pause" 17 minutes ago Up 17 minutes k8s_POD_coredns-78fcd69978-h28mp_kube-system_f62eec5a-290c-4a42-b488-e1475d7f6ff2_0
df0186291c8c k8s.gcr.io/pause:3.5 "/pause" 17 minutes ago Up 17 minutes k8s_POD_kube-proxy-bf75s_kube-system_39dc64cc-2eab-497d-bf13-b5e6d1dbc9cd_0
06fdfb5eab54 k8s.gcr.io/pause:3.5 "/pause" 17 minutes ago Up 17 minutes k8s_POD_storage-provisioner_kube-system_5c3cec65-5a2d-4881-aa34-d98e1098f17f_0
183f6cc10573 aca5ededae9c "kube-scheduler --au…" 17 minutes ago Up 17 minutes k8s_kube-scheduler_kube-scheduler-minikube_kube-system_6fd078a966e479e33d7689b1955afaa5_0
2d032a2ec51d f30469a2491a "kube-apiserver --ad…" 17 minutes ago Up 17 minutes k8s_kube-apiserver_kube-apiserver-minikube_kube-system_4889789e825c65fc82181cf533a96c40_0
cd157b628bc5 6e002eb89a88 "kube-controller-man…" 17 minutes ago Up 17 minutes k8s_kube-controller-manager_kube-controller-manager-minikube_kube-system_f8d2ab48618562b3a50d40a37281e35e_0
a2d5608e5bac 004811815584 "etcd --advertise-cl…" 17 minutes ago Up 17 minutes k8s_etcd_etcd-minikube_kube-system_08a3871e1baa241b73e5af01a6d01393_0
e9493a3f2383 k8s.gcr.io/pause:3.5 "/pause" 17 minutes ago Up 17 minutes k8s_POD_kube-apiserver-minikube_kube-system_4889789e825c65fc82181cf533a96c40_0
1088a8210eed k8s.gcr.io/pause:3.5 "/pause" 17 minutes ago Up 17 minutes k8s_POD_kube-scheduler-minikube_kube-system_6fd078a966e479e33d7689b1955afaa5_0
f551447a77b6 k8s.gcr.io/pause:3.5 "/pause" 17 minutes ago Up 17 minutes k8s_POD_etcd-minikube_kube-system_08a3871e1baa241b73e5af01a6d01393_0
c8414ee790d8 k8s.gcr.io/pause:3.5 "/pause" 17 minutes ago Up 17 minutes k8s_POD_kube-controller-manager-minikube_kube-system_f8d2ab48618562b3a50d40a37281e35e_0
pause 容器在 pod 中是独立的。 pause 容器是一个容器,其中包含 pod 的网络命名空间。它什么也不做。即使 pod 处于 CrashLoopBackOff 状态,它也不会停止。如果暂停容器已死,kubernetes 认为 pod 已死并杀死它并重新安排一个新的。这里没有这种情况。
【讨论】:
pause 容器是一个完全独立的容器,就像 pod 中的其他容器一样(除了命名空间重叠的地方,正如你提到的)。它在 pod 由 kubelet 启动时启动,并在 pod 消失时被拆除(删除、安排在其他地方等等)。
【讨论】: