kubernetes - Pod 中暂停容器的生命周期
问题描述
在 k8s 中,一个 pod 以一个名为pause
.
暂停容器帮助其他容器共享网络命名空间。
我知道,但有一个问题。
暂停容器的生命周期是什么?
我想知道的是,当一个 pod 获取crashloopbackoff
或暂时不工作时,pause 容器是否也会停止?
如果没有,pause 容器是否维护自己的 Linux 命名空间?
解决方案
当 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 已死并杀死它并重新安排一个新的。这里没有这种情况。
推荐阅读
- html - Outlook 2016 未加载某些背景颜色
- regex - 与行中的特定字符串不匹配的正则表达式
- reactjs - 如何模拟我的 React 组件中使用的依赖项?
- java - AndroidManifest 中的工具替换
- leaflet - 使用 Leaflet 的神秘“标记”(使用 Omnivore 和 MapQuest 插件)
- css - MUI 卡文本覆盖
- sql - SQL Hive - 计算前几个月的滚动 SUM、AVG
- android - Google 测试:Android 与 Linux EXPECT_DEATH 测试
- c# - 在 screenSpace 中获取 UnityEngine.UI.Images 位置并计算归一化偏移量(在覆盖画布内)
- spock - 如何为我的模块创建“getter”(如何使用导航器实例化模块对象?)