Kubernetes 如何列出pod中运行的所有容器,包括init容器?
检索pod中运行的所有容器的解决方案是在此处运行Kubernetes 如何列出pod中运行的所有容器,包括init容器?,kubernetes,Kubernetes,检索pod中运行的所有容器的解决方案是在此处运行kubectl get pods pod_NAME_-o jsonpath={.spec.containers[*].NAME},但是此命令行不提供init containers 有没有办法干净地检索pod中运行的所有容器,包括init容器 [编辑]正如svenwltr所指出的,在Kubernete 1.6.0或更高版本上,可以使用kubectl get pods POD_NAME_HERE-o jsonpath={.spec.initContai
kubectl get pods pod_NAME_-o jsonpath={.spec.containers[*].NAME}
,但是此命令行不提供init containers
有没有办法干净地检索pod中运行的所有容器,包括init容器
[编辑]正如svenwltr所指出的,在Kubernete 1.6.0或更高版本上,可以使用
kubectl get pods POD_NAME_HERE-o jsonpath={.spec.initContainers[*].NAME}
检索init容器,并且可以使用kubectl get POD_NAME_HERE-o jsonpath=“{.spec['containers','initContainers'[*].NAME}”检索所有容器。但是,对于尚未实现.spec.initContainers
的Kubernetes较低版本,这不是有效的解决方法。init容器存储在spec.initContainers
中:
kubectl get pods POD_NAME_HERE -o jsonpath={.spec.initContainers[*].name}
您可以通过以下方式显示两者:
在Kubernetes 1.6之前,init容器存储在.metadata.annotations.pod.beta.Kubernetes.io/init containers“
中。因此,应该可以通过以下方式获得:
kubectl get pods POD_NAME_HERE -o jsonpath='{metadata.annotations."pod.beta.kubernetes.io/init-containers".[*].name}'
不幸的是,我无法测试它,因为我没有具有此版本的集群。同样,将容器和init容器连接到一个命令中看起来有点困难。另一种方法是使用kubectl descripe pod
。这将在pod的常规容器的单独部分中打印Init容器
例如:
$ kubectl describe pod myapp-pod
Name: myapp-pod
Namespace: default
[...]
Init Containers:
init-myservice:
Container ID: docker://87c2601c9f18b4e9d63f995e03d83338e1321e016e76798243257d3e682256c2
Image: busybox
Image ID: docker-pullable://busybox@sha256:3841678eb5ddd5b62fec74d7f530fe633ee7cf11d4e3827c0b74e2e4c2a2466f
Port: <none>
Command:
sh
-c
until nslookup myservice; do echo waiting for myservice; sleep 2; done;
State: Running
Started: Thu, 02 Nov 2017 10:54:01 -0400
Ready: False
Restart Count: 0
Requests:
cpu: 100m
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-38lv5 (ro)
init-mydb:
Container ID:
Image: busybox
Image ID:
Port: <none>
Command:
sh
-c
until nslookup mydb; do echo waiting for mydb; sleep 2; done;
State: Waiting
Reason: PodInitializing
Ready: False
Restart Count: 0
Requests:
cpu: 100m
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-38lv5 (ro)
Containers:
myapp-container:
Container ID:
Image: busybox
Image ID:
Port: <none>
Command:
sh
-c
echo The app is running! && sleep 3600
State: Waiting
Reason: PodInitializing
Ready: False
Restart Count: 0
Requests:
cpu: 100m
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-38lv5 (ro)
[...]
$kubectl描述pod myapp pod
名称:myapp pod
名称空间:默认值
[...]
初始化容器:
init myservice:
容器ID:docker://87c2601c9f18b4e9d63f995e03d83338e1321e016e76798243257d3e682256c2
图片:busybox
图像ID:docker-pullable://busybox@sha256:3841678eb5ddd5b62fec74d7f530fe633ee7cf11d4e3827c0b74e2e4c2a2466f
端口:
命令:
嘘
-c
直到找到我的服务;不要等待我的服务;睡眠2;完成;
状态:正在运行
开始时间:2017年11月2日星期四10:54:01-0400
就绪:错误
重新启动计数:0
请求:
中央处理器:100米
环境:
挂载:
/来自default-token-38lv5(ro)的var/run/secrets/kubernetes.io/serviceCount
初始化mydb:
容器ID:
图片:busybox
图像ID:
端口:
命令:
嘘
-c
直到我的数据库;不要等待mydb;睡眠2;完成;
国家:等待
原因:领奖台初始化
就绪:错误
重新启动计数:0
请求:
中央处理器:100米
环境:
挂载:
/来自default-token-38lv5(ro)的var/run/secrets/kubernetes.io/serviceCount
容器:
myapp容器:
容器ID:
图片:busybox
图像ID:
端口:
命令:
嘘
-c
回显应用程序正在运行!&&睡眠3600
国家:等待
原因:领奖台初始化
就绪:错误
重新启动计数:0
请求:
中央处理器:100米
环境:
挂载:
/来自default-token-38lv5(ro)的var/run/secrets/kubernetes.io/serviceCount
[...]
这是Kubernetes 1.6.0及更高版本的正确答案,尽管它对Kubernetes的早期版本不起作用。我更新了答案,但不幸的是,我这里没有这样的群集来测试它。我有一个群集-我可以稍后再试,并通知您它是否有效。这非常有效,可以与按标签查找POD名称相结合,iePOD\u NAME\u HERE=$(kubectl get POD-l“app=MYAPP”--所有名称空间-o jsonpath='{.items[0].metadata.NAME}')
我什么都没有,所以我使用kubectl descripe POD
查看所有者。
$ kubectl describe pod myapp-pod
Name: myapp-pod
Namespace: default
[...]
Init Containers:
init-myservice:
Container ID: docker://87c2601c9f18b4e9d63f995e03d83338e1321e016e76798243257d3e682256c2
Image: busybox
Image ID: docker-pullable://busybox@sha256:3841678eb5ddd5b62fec74d7f530fe633ee7cf11d4e3827c0b74e2e4c2a2466f
Port: <none>
Command:
sh
-c
until nslookup myservice; do echo waiting for myservice; sleep 2; done;
State: Running
Started: Thu, 02 Nov 2017 10:54:01 -0400
Ready: False
Restart Count: 0
Requests:
cpu: 100m
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-38lv5 (ro)
init-mydb:
Container ID:
Image: busybox
Image ID:
Port: <none>
Command:
sh
-c
until nslookup mydb; do echo waiting for mydb; sleep 2; done;
State: Waiting
Reason: PodInitializing
Ready: False
Restart Count: 0
Requests:
cpu: 100m
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-38lv5 (ro)
Containers:
myapp-container:
Container ID:
Image: busybox
Image ID:
Port: <none>
Command:
sh
-c
echo The app is running! && sleep 3600
State: Waiting
Reason: PodInitializing
Ready: False
Restart Count: 0
Requests:
cpu: 100m
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-38lv5 (ro)
[...]