我的理解是,AGE使用 时显示的 Podkubectl get pod显示了自上次重新启动以来 Pod 运行的时间。因此,对于下面所示的 pod,我的理解是它最初重新启动了 14 次,但在过去 17 小时内没有重新启动。这是正确的吗?解释这一点的 kubernetes 参考资料在哪里?
Bgu*_*ess 13
希望您享受 Kubernetes 之旅!
\n事实上,使用 kubectl get pod 时的 AGE 标头会显示pod的创建时间和运行时间。但不要混淆 POD 和容器:
\n标头“RESTARTS”实际上链接到 pod 清单的参数 > \'.status.containerStatuses[0].restartCount\'。这意味着此标头与重新启动的次数相关联,而不是与 Pod 的重新启动次数相关联,而是与 Pod 内的容器的重新启动次数相关联。
\n下面是一个示例:\n我刚刚部署了一个新的 pod:
\nNAME READY STATUS RESTARTS AGE\ntest-bg-7d57d546f4-f4cql 2/2 Running 0 9m38s\nRun Code Online (Sandbox Code Playgroud)\n如果我检查此 pod 的 yaml 配置,我们可以看到在“status”部分中我们有所说的“restartCount”字段:
\n\xe2\x9d\xaf k get po test-bg-7d57d546f4-f4cql -o yaml\napiVersion: v1\nkind: Pod\nmetadata:\n...\nspec:\n...\nstatus:\n...\n containerStatuses:\n ...\n - containerID: docker://3f53f140f775416644ea598d554e9b8185e7dd005d6da1940d448b547d912798\n ...\n name: test-bg\n ready: true\n restartCount: 0\n ...\nRun Code Online (Sandbox Code Playgroud)\n因此,为了演示我所说的内容,我将连接到我的 pod 并终止我的 pod 正在运行的主进程:
\n\xe2\x9d\xaf k exec -it test-bg-7d57d546f4-f4cql -- bash\nI have no name!@test-bg-7d57d546f4-f4cql:/tmp$ ps aux\nUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND\n1000 1 0.0 0.0 5724 3256 ? Ss 03:20 0:00 bash -c source /tmp/entrypoint.bash\n1000 22 1.5 0.1 2966140 114672 ? Sl 03:20 0:05 java -jar test-java-bg.jar\n1000 41 3.3 0.0 5988 3592 pts/0 Ss 03:26 0:00 bash\n1000 48 0.0 0.0 8588 3260 pts/0 R+ 03:26 0:00 ps aux\nI have no name!@test-bg-7d57d546f4-f4cql:/tmp$ kill 22\nI have no name!@test-bg-7d57d546f4-f4cql:/tmp$ command terminated with exit code 137\nRun Code Online (Sandbox Code Playgroud)\n之后,如果我重新执行“kubectl get pod”命令,我会得到以下结果:
\nNAME READY STATUS RESTARTS AGE\ntest-bg-7d57d546f4-f4cql 2/2 Running 1 11m\nRun Code Online (Sandbox Code Playgroud)\n然后,如果我返回 yaml 配置,我们可以看到 restartCount 字段实际上链接到我的容器而不是我的 pod。
\n\xe2\x9d\xaf k get po test-bg-7d57d546f4-f4cql -o yaml\napiVersion: v1\nkind: Pod\nmetadata:\n...\nspec:\n...\nstatus:\n...\n containerStatuses:\n ...\n - containerID: docker://3f53f140f775416644ea598d554e9b8185e7dd005d6da1940d448b547d912798\n ...\n name: test-bg\n ready: true\n restartCount: 1\n ...\nRun Code Online (Sandbox Code Playgroud)\n因此,总而言之,RESTARTS标头为您提供容器的 restartCount,而不是 pod 的 restartCount,但AGE标头为您提供 pod 的年龄。
\n这次,如果我删除 pod:
\n\xe2\x9d\xaf k delete pod test-bg-7d57d546f4-f4cql\npod "test-bg-7d57d546f4-f4cql" deleted\nRun Code Online (Sandbox Code Playgroud)\n我们可以看到 restartCount 又回到了 0,因为它是一个全新的 pod,具有全新的年龄:
\nNAME READY STATUS RESTARTS AGE\ntest-bg-7d57d546f4-bnvxx 2/2 Running 0 23s\ntest-bg-7d57d546f4-f4cql 2/2 Terminating 2 25m\nRun Code Online (Sandbox Code Playgroud)\n对于您的示例,这意味着容器重新启动了 14 次,但 Pod 是在 17 小时前部署的。
\n我找不到这方面的确切文档,但是(正如此处所解释的:https: //kubernetes.io/docs/concepts/workloads/_print/#working-with-pods):\n“注意:重新启动Pod 中的容器不应与重新启动 Pod 相混淆。Pod 不是进程,而是运行容器的环境。Pod 会一直存在,直到被删除。”
\n希望这可以帮助您更好地理解。\n这里有一个来自https://kubernetes.io/docs/reference/kubectl/cheatsheet/的小提示的小提示:\nkubectl get pods --sort-by=\'.status.containerStatuses[0 ].restartCount\'\n(按 pod 的 restartCount 编号对 pod 进行排序 :p)
\n再见
\n| 归档时间: |
|
| 查看次数: |
5384 次 |
| 最近记录: |