首页 > 解决方案 > Pod 中暂停容器的生命周期

问题描述

在 k8s 中,一个 pod 以一个名为pause.
暂停容器帮助其他容器共享网络命名空间。
我知道,但有一个问题。

暂停容器的生命周期是什么?
我想知道的是,当一个 pod 获取crashloopbackoff或暂时不工作时,pause 容器是否也会停止?

如果没有,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


推荐阅读