【发布时间】:2021-09-06 08:13:22
【问题描述】:
我最近加入了 Kubernetes 的一个新项目。最后一个团队似乎没有很好地管理部署,并且一些任务是通过运行在 init 容器中的单个 pod 来管理的。
因此,例如,我们在其中有命名空间“test”和 pod - 其中一些是手动运行的,除了其他团队成员的部署并包含initContainers。我需要找到一个包含 init 容器的特定 pod - 获取他的名字、清单等。
Kubernetes 文档中的备忘单提出了一个获取容器 ID 的解决方案:
kubectl get pods -n test -o jsonpath='{range .items[*].status.initContainerStatuses[*]}{.containerID}{"\n"}{end}' | cut -d/ -f3
它给了我一个InitContainer的ID。
当我尝试获取它的名称和相应的 pod 名称时,我尝试使用此代码 sn-p:
kubectl get pod -n test -o jsonpath='{range .items[?(@.status.containerStatuses[].containerID=="docker://686bc30be6e870023dcf611f7a7808516e041c892a236e565ba2bd3e0569ff7a")]}{.metadata.name}{end}'
到目前为止,它什么也没给我。
有没有更优雅、更简单的方法在特定命名空间中使用initcontainers 获取 pod 名称?
我也试过这个解决方案:
kubectl get pod -n test -o custom-columns='POD_NAME:metadata.name,INIT_NAME:spec.InitContainers[*].name'
但它什么也不返回。
我现在使用的解决方案是在 bash 中使用“for”循环解析 yaml 输出,但这对我来说听起来不太好。
有什么建议吗?
【问题讨论】:
标签: kubernetes