我正在使用Stackdriver Monitoring API来获取与容器相关的指标。API返回的JSON对象具有容器的以下详细信息。
示例:
{ "metric": { "type": "container.googleapis.com/container/cpu/utilization" "resource": { "type": "gke_container", "labels": { "zone": "us-central1-a", "pod_id": "1138528c-c36e-11e9-a1a7-42010a800198", "project_id": "auto-scaling-springboot", "cluster_name": "load-test", "container_name": "", "namespace_id": "f0965889-c36d-11e9-9e00-42010a800198", "instance_id": "3962380509873542383" "metricKind": "GAUGE", "valueType": "DOUBLE", "points": [ "interval": { "startTime": "2019-09-04T04:00:00Z", "endTime": "2019-09-04T04:00:00Z" "value": { "doubleValue": 0.050707947222229495 }
当我执行 kubectl describe pod [pod name] 时,我没有得到容器所特有的这些信息。因此,我无法确定与容器相对应的结果。
kubectl describe pod [pod name]
那么,如何获取pod ID以便能够识别它呢?
发布于 2019-09-05 14:58:44
使用kubectl jsonpath
jsonpath
获取特定pod的UID:
$ kubectl get pods -n <namespace> <pod-name> -o jsonpath='{.metadata.uid}'
$ kubectl get pods -n kube-system kubedb-66f78 -o jsonpath='{.metadata.uid}' 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff⏎
使用kubectl custom-columns
custom-columns
列出所有PodName及其命名空间的UID:
$ kubectl get pods -n <namespace> -o custom-columns=PodName:.metadata.name,PodUID:.metadata.uid
$ kubectl get pods -n kube-system -o custom-columns=PodName:.metadata.name,PodUID:.metadata.uid PodName PodUID coredns-6955765f44-8kp9t 0ae5c03d-5fb3-4eb9-9de8-2bd4b51606ba coredns-6955765f44-ccqgg 6aaa09a1-241a-4013-b706-fe80ae371206 etcd-kind-control-plane c7304563-95a8-4428-881e-422ce3e073e7