Mug*_*gen 1 kubernetes kubectl kubernetes-pod
我试图调试一些安装问题,安装日志将我引导到以下路径/var/lib/kubelet/pods,即
/var/lib/kubelet/pods/f6affad1-941d-4df1-a0b7-38e3f2ab99d5/volumes/kubernetes.io~nfs/my-pv-e0dbe341a6fe475c9029fb372e
如何将根目录的guid映射pods到实际运行的pod或容器?
(f6affad1-941d-4df1-a0b7-38e3f2ab99d5在上面的例子中)
kubectl我没有看到与or返回的值有任何相关性crictl。
他们是.metadata.uidPod 的成员;人们可以使用您最喜欢的机制来映射它们,该机制用于查询所有 Pod 并对其进行过滤.metadata.uid,并且如果您有太多 Pod 以至于-A无法实现,则可以选择限制为仅安排在该节点上的那些 Pod
for d in /var/lib/kubelet/pods/*; do
p_u=$(basename "$d")
kubectl get po -A -o json | \
jq --arg pod_uuid "$p_u" -r '.items[]
| select(.metadata.uid == $pod_uuid)
| "uuid \($pod_uuid) is \(.metadata.name)"'
done
Run Code Online (Sandbox Code Playgroud)
我确信有一个-o jsonpath=or-o gotemplate=形式可以消除需要jq,但是在文本区域中输入需要做更多的工作
关于你的crictl问题,我这一秒无法访问我的containerd集群,但是基于docker的集群对本地容器进行了标记,io.kubernetes.pod.uid所以我猜containerd会做类似的事情:
"Labels": {
"annotation.io.kubernetes.container.hash": "e44bee94",
"annotation.io.kubernetes.container.restartCount": "4",
"annotation.io.kubernetes.container.terminationMessagePath": "/dev/termination-log",
"annotation.io.kubernetes.container.terminationMessagePolicy": "File",
"annotation.io.kubernetes.pod.terminationGracePeriod": "30",
"io.kubernetes.container.logpath": "/var/log/pods/kube-system_storage-provisioner_b4aa3b1c-62c1-4661-a302-4c06b305b7c0/storage-provisioner/4.log",
"io.kubernetes.container.name": "storage-provisioner",
"io.kubernetes.docker.type": "container",
"io.kubernetes.pod.name": "storage-provisioner",
"io.kubernetes.pod.namespace": "kube-system",
"io.kubernetes.pod.uid": "b4aa3b1c-62c1-4661-a302-4c06b305b7c0",
"io.kubernetes.sandbox.id": "3950ec60121fd13116230cad388a4c6c4e417c660b7da475436f9ad5c9cf6738"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3343 次 |
| 最近记录: |