kubernetes - 自上次重启以来一直是 pod 的年龄
kubernetes - is age of pod always since last restart
我的理解是,使用 kubectl get pod
时为 pod 显示的 AGE
显示了自上次重启以来 pod 已经 运行 的时间。所以,对于下面显示的 pod,我的理解是它最初重启了 14 次,但在过去的 17 小时内没有重启。这是正确的吗?解释这个问题的 kubernetes 参考资料在哪里?
希望您享受 Kubernetes 之旅!
事实上,使用 kubectl get pod 时的 AGE Headers 会显示 pod 已创建多长时间,它是 运行。但不要混淆 POD 和容器:
header“RESTARTS”实际上链接到 pod 清单的参数 > '.status.containerStatuses[0].restartCount'。这意味着这个 header 链接到重新启动的次数,而不是 pod 的重启次数,而是 pod 内容器的重启次数。
这是一个例子:
我刚刚部署了一个新的 pod:
NAME READY STATUS RESTARTS AGE
test-bg-7d57d546f4-f4cql 2/2 Running 0 9m38s
如果我检查这个 pod 的 yaml 配置,我们可以看到在“status”部分我们有所说的“restartCount”字段:
❯ k get po test-bg-7d57d546f4-f4cql -o yaml
apiVersion: v1
kind: Pod
metadata:
...
spec:
...
status:
...
containerStatuses:
...
- containerID: docker://3f53f140f775416644ea598d554e9b8185e7dd005d6da1940d448b547d912798
...
name: test-bg
ready: true
restartCount: 0
...
所以,为了证明我在说什么,我将连接到我的 pod 并终止主进程我的 pod 是 运行:
❯ k exec -it test-bg-7d57d546f4-f4cql -- bash
I have no name!@test-bg-7d57d546f4-f4cql:/tmp$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
1000 1 0.0 0.0 5724 3256 ? Ss 03:20 0:00 bash -c source /tmp/entrypoint.bash
1000 22 1.5 0.1 2966140 114672 ? Sl 03:20 0:05 java -jar test-java-bg.jar
1000 41 3.3 0.0 5988 3592 pts/0 Ss 03:26 0:00 bash
1000 48 0.0 0.0 8588 3260 pts/0 R+ 03:26 0:00 ps aux
I have no name!@test-bg-7d57d546f4-f4cql:/tmp$ kill 22
I have no name!@test-bg-7d57d546f4-f4cql:/tmp$ command terminated with exit code 137
在此之后,如果我重新执行“kubectl get pod”命令,我得到了这个:
NAME READY STATUS RESTARTS AGE
test-bg-7d57d546f4-f4cql 2/2 Running 1 11m
然后,如果我回到我的 yaml 配置,我们可以看到 restartCount 字段实际上链接到我的容器而不是我的 pod。
❯ k get po test-bg-7d57d546f4-f4cql -o yaml
apiVersion: v1
kind: Pod
metadata:
...
spec:
...
status:
...
containerStatuses:
...
- containerID: docker://3f53f140f775416644ea598d554e9b8185e7dd005d6da1940d448b547d912798
...
name: test-bg
ready: true
restartCount: 1
...
所以,总而言之,RESTARTS header 给你的是容器的 restartCount 而不是 pod 的,而是 AGE header 给出了 pod 的年龄。
这次,如果我删除 pod:
❯ k delete pod test-bg-7d57d546f4-f4cql
pod "test-bg-7d57d546f4-f4cql" deleted
我们可以看到 restartCount 已恢复为 0,因为它是一个具有全新 age 的全新 pod:
NAME READY STATUS RESTARTS AGE
test-bg-7d57d546f4-bnvxx 2/2 Running 0 23s
test-bg-7d57d546f4-f4cql 2/2 Terminating 2 25m
对于您的示例,这意味着 容器 重新启动了 14 次,但是 pod 是在 17 小时前部署的。
我找不到这方面的确切文档,但是(正如这里解释的那样:https://kubernetes.io/docs/concepts/workloads/_print/#working-with-pods):
"注意:重启 Pod 中的容器不应与重启 Pod 混淆。Pod 不是进程,而是 运行 容器的环境。Pod 会一直存在,直到它被删除。"
希望这能帮助您更好地理解。
这是来自 https://kubernetes.io/docs/reference/kubectl/cheatsheet/ 的小提示:
kubectl get pods --sort-by='.status.containerStatuses[0].restartCount'
(按 restartCount 编号对 pods 进行排序 :p)
再见
天哪,他们在 kubernetes 中添加了一个新功能(我不知道从什么时候开始的)但是看:
NAME READY STATUS RESTARTS AGE
pod/nginx-deployment-74d589986c-ngvgc 1/1 Running 0 21h
pod/postgres 0/1 CrashLoopBackOff 7 (3m16s ago) 14m
现在你可以看到容器的实际年龄了!!!!!! (在我的例子中是 3 分钟 16 秒前)
这是我的 kubernetes 版本:
❯ kubectl version --short
Client Version: v1.22.5
Server Version: v1.23.5
我的理解是,使用 kubectl get pod
时为 pod 显示的 AGE
显示了自上次重启以来 pod 已经 运行 的时间。所以,对于下面显示的 pod,我的理解是它最初重启了 14 次,但在过去的 17 小时内没有重启。这是正确的吗?解释这个问题的 kubernetes 参考资料在哪里?
希望您享受 Kubernetes 之旅!
事实上,使用 kubectl get pod 时的 AGE Headers 会显示 pod 已创建多长时间,它是 运行。但不要混淆 POD 和容器:
header“RESTARTS”实际上链接到 pod 清单的参数 > '.status.containerStatuses[0].restartCount'。这意味着这个 header 链接到重新启动的次数,而不是 pod 的重启次数,而是 pod 内容器的重启次数。
这是一个例子: 我刚刚部署了一个新的 pod:
NAME READY STATUS RESTARTS AGE
test-bg-7d57d546f4-f4cql 2/2 Running 0 9m38s
如果我检查这个 pod 的 yaml 配置,我们可以看到在“status”部分我们有所说的“restartCount”字段:
❯ k get po test-bg-7d57d546f4-f4cql -o yaml
apiVersion: v1
kind: Pod
metadata:
...
spec:
...
status:
...
containerStatuses:
...
- containerID: docker://3f53f140f775416644ea598d554e9b8185e7dd005d6da1940d448b547d912798
...
name: test-bg
ready: true
restartCount: 0
...
所以,为了证明我在说什么,我将连接到我的 pod 并终止主进程我的 pod 是 运行:
❯ k exec -it test-bg-7d57d546f4-f4cql -- bash
I have no name!@test-bg-7d57d546f4-f4cql:/tmp$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
1000 1 0.0 0.0 5724 3256 ? Ss 03:20 0:00 bash -c source /tmp/entrypoint.bash
1000 22 1.5 0.1 2966140 114672 ? Sl 03:20 0:05 java -jar test-java-bg.jar
1000 41 3.3 0.0 5988 3592 pts/0 Ss 03:26 0:00 bash
1000 48 0.0 0.0 8588 3260 pts/0 R+ 03:26 0:00 ps aux
I have no name!@test-bg-7d57d546f4-f4cql:/tmp$ kill 22
I have no name!@test-bg-7d57d546f4-f4cql:/tmp$ command terminated with exit code 137
在此之后,如果我重新执行“kubectl get pod”命令,我得到了这个:
NAME READY STATUS RESTARTS AGE
test-bg-7d57d546f4-f4cql 2/2 Running 1 11m
然后,如果我回到我的 yaml 配置,我们可以看到 restartCount 字段实际上链接到我的容器而不是我的 pod。
❯ k get po test-bg-7d57d546f4-f4cql -o yaml
apiVersion: v1
kind: Pod
metadata:
...
spec:
...
status:
...
containerStatuses:
...
- containerID: docker://3f53f140f775416644ea598d554e9b8185e7dd005d6da1940d448b547d912798
...
name: test-bg
ready: true
restartCount: 1
...
所以,总而言之,RESTARTS header 给你的是容器的 restartCount 而不是 pod 的,而是 AGE header 给出了 pod 的年龄。
这次,如果我删除 pod:
❯ k delete pod test-bg-7d57d546f4-f4cql
pod "test-bg-7d57d546f4-f4cql" deleted
我们可以看到 restartCount 已恢复为 0,因为它是一个具有全新 age 的全新 pod:
NAME READY STATUS RESTARTS AGE
test-bg-7d57d546f4-bnvxx 2/2 Running 0 23s
test-bg-7d57d546f4-f4cql 2/2 Terminating 2 25m
对于您的示例,这意味着 容器 重新启动了 14 次,但是 pod 是在 17 小时前部署的。
我找不到这方面的确切文档,但是(正如这里解释的那样:https://kubernetes.io/docs/concepts/workloads/_print/#working-with-pods): "注意:重启 Pod 中的容器不应与重启 Pod 混淆。Pod 不是进程,而是 运行 容器的环境。Pod 会一直存在,直到它被删除。"
希望这能帮助您更好地理解。 这是来自 https://kubernetes.io/docs/reference/kubectl/cheatsheet/ 的小提示: kubectl get pods --sort-by='.status.containerStatuses[0].restartCount' (按 restartCount 编号对 pods 进行排序 :p)
再见
天哪,他们在 kubernetes 中添加了一个新功能(我不知道从什么时候开始的)但是看:
NAME READY STATUS RESTARTS AGE
pod/nginx-deployment-74d589986c-ngvgc 1/1 Running 0 21h
pod/postgres 0/1 CrashLoopBackOff 7 (3m16s ago) 14m
现在你可以看到容器的实际年龄了!!!!!! (在我的例子中是 3 分钟 16 秒前) 这是我的 kubernetes 版本:
❯ kubectl version --short
Client Version: v1.22.5
Server Version: v1.23.5