kubernetes 如何将/var/lib/kubelet/pod下的guidMap到实际的pod [已关闭]

yquaqz18  于 2022-11-28  发布在  Kubernetes
关注(0)|答案(2)|浏览(227)

**已关闭。**此问题为not about programming or software development。目前不接受答案。

此问题似乎与a specific programming problem, a software algorithm, or software tools primarily used by programmers无关。如果您认为此问题与another Stack Exchange site相关,您可以留下评论,说明在何处可以找到此问题的答案。
4天前关闭。
Improve this question
我试图调试一些挂载问题,挂载日志将我引导到/var/lib/kubelet/pods下的路径,即
/var/lib/kubelet/pods/f6affad1-941d-4df1-a0b7-38e3f2ab99d5/volumes/kubernetes.io~nfs/my-pv-e0dbe341a6fe475c9029fb372e
如何将pods下根目录的guidMap到实际运行的pod或container?
(上例中为f6affad1-941d-4df1-a0b7-38e3f2ab99d5
我看不出kubectlcrictl返回的值有任何相关性。

ssm49v7z

ssm49v7z1#

它们是花苞的一部分您可以使用您最喜欢的机制来查询所有pod并在其.metadata.uid上进行过滤,并选择性地限制到在该节点上调度的那些pod,如果您有太多的pod,使-A不可行的话

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

我确信有一个-o jsonpath=-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"
            }
4xrmg8kj

4xrmg8kj2#

Map到不需要kubectl且依赖于保存在文件系统中的容器名称的pod名称的更简单方法是:

ls -lad /var/lib/kubelet/pods/*/containers/*

# Sample output:
# /var/lib/kubelet/pods/0a82722a-57e7-4a32-b0e7-1d3864b98c98/containers/worker
# /var/lib/kubelet/pods/148c7195-c3ab-4750-afb4-e6fb34948ed5/containers/dashboard
# /var/lib/kubelet/pods/6bb42e72-902d-49b1-8beb-0e885e2708fc/containers/kube-proxy
# ...

find /var/lib/kubelet/pods/ -maxdepth 3 -name "*dnsutils*"

# Sample output:
# /var/lib/kubelet/pods/a18df6c7-3a37-4bc0-8593-026145f4c4b6/containers/dnsutils

相关问题