如何通过 kubectl 命令识别 static pods?
How to identify static pods via kubectl command?
我的 Kubernetes 集群的 2 个节点中有几个 pods。 (请看下文)。
有什么方法可以告诉我哪些是静态的 pods? (也许是 kubectl
排序命令?)
谢谢!
controlplane $ k get pods -A -o wide
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kube-system coredns-f9fd979d6-h865q 1/1 Running 0 119s 10.244.0.5 node02 <none> <none>
kube-system coredns-f9fd979d6-z4j6f 1/1 Running 0 119s 10.244.1.5 node01 <none> <none>
kube-system etcd-a1b2k7h7 1/1 Running 0 2m9s 172.17.0.79 node02 <none> <none>
kube-system kube-apiserver-g8j4k8o8 1/1 Running 0 2m9s 172.17.0.79 node02 <none> <none>
使用 kubectl describe
命令检查静态 pod 的所有者引用应表明此类 pod 不受 ReplicaSet
控制,而是由 Node/controlplane
控制
您可以按 OwnerReference.Kind
筛选。静态 pods 具有 Node
ownerReference 类型。
您可以使用 --custom-columns
列出您的所有 pods 及其所有者引用。示例:
$ kubectl get pods --all-namespaces -o custom-columns=NAME:.metadata.name,CONTROLLER:.metadata.ownerReferences[].kind,NAMESPACE:.metadata.namespace
NAME CONTROLLER NAMESPACE
busybox-6ff78776d5-k56fx ReplicaSet default
nginx-6b87f7d77c-rq6fl ReplicaSet default
coredns-74ff55c5b-xpgnq ReplicaSet kube-system
etcd-minikube Node kube-system
ingress-nginx-admission-create-n6j7k Job kube-system
ingress-nginx-admission-patch-45xvw Job kube-system
ingress-nginx-controller-65cf89dc4f-g7lwm ReplicaSet kube-system
kindnet-44pq8 DaemonSet kube-system
kindnet-nqhg9 DaemonSet kube-system
kube-apiserver-minikube Node kube-system
kube-controller-manager-minikube Node kube-system
kube-proxy-nmzbn DaemonSet kube-system
kube-proxy-wlmdz DaemonSet kube-system
kube-scheduler-minikube Node kube-system
metrics-server-58966dd6b9-schjr ReplicaSet kube-system
storage-provisioner <none> kube-system
或使用 jq
仅过滤静态 pods (kind == "Node"
):
$ kubectl get pods --all-namespaces -o json | jq -r '.items | map(select(.metadata.ownerReferences[]?.kind == "Node" ) | .metadata.name) | .[]'
etcd-minikube
kube-apiserver-minikube
kube-controller-manager-minikube
kube-scheduler-minikube
在 Kubernetes v1.16.3 上 metadata.ownerReferences.kind 不是问题,因此此处推荐的答案无效。
我能够通过使用以下命令查看 metadata.labels.tier key/value 对等于“控制平面”和 jq 来识别静态 Pods。
kubectl get pods --all-namespaces -o json | jq -r '.items | map(select(.metadata.labels.tier == "control-plane" ) | .metadata.name) | .[]'
我的 Kubernetes 集群的 2 个节点中有几个 pods。 (请看下文)。
有什么方法可以告诉我哪些是静态的 pods? (也许是 kubectl
排序命令?)
谢谢!
controlplane $ k get pods -A -o wide
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kube-system coredns-f9fd979d6-h865q 1/1 Running 0 119s 10.244.0.5 node02 <none> <none>
kube-system coredns-f9fd979d6-z4j6f 1/1 Running 0 119s 10.244.1.5 node01 <none> <none>
kube-system etcd-a1b2k7h7 1/1 Running 0 2m9s 172.17.0.79 node02 <none> <none>
kube-system kube-apiserver-g8j4k8o8 1/1 Running 0 2m9s 172.17.0.79 node02 <none> <none>
使用 kubectl describe
命令检查静态 pod 的所有者引用应表明此类 pod 不受 ReplicaSet
控制,而是由 Node/controlplane
您可以按 OwnerReference.Kind
筛选。静态 pods 具有 Node
ownerReference 类型。
您可以使用 --custom-columns
列出您的所有 pods 及其所有者引用。示例:
$ kubectl get pods --all-namespaces -o custom-columns=NAME:.metadata.name,CONTROLLER:.metadata.ownerReferences[].kind,NAMESPACE:.metadata.namespace
NAME CONTROLLER NAMESPACE
busybox-6ff78776d5-k56fx ReplicaSet default
nginx-6b87f7d77c-rq6fl ReplicaSet default
coredns-74ff55c5b-xpgnq ReplicaSet kube-system
etcd-minikube Node kube-system
ingress-nginx-admission-create-n6j7k Job kube-system
ingress-nginx-admission-patch-45xvw Job kube-system
ingress-nginx-controller-65cf89dc4f-g7lwm ReplicaSet kube-system
kindnet-44pq8 DaemonSet kube-system
kindnet-nqhg9 DaemonSet kube-system
kube-apiserver-minikube Node kube-system
kube-controller-manager-minikube Node kube-system
kube-proxy-nmzbn DaemonSet kube-system
kube-proxy-wlmdz DaemonSet kube-system
kube-scheduler-minikube Node kube-system
metrics-server-58966dd6b9-schjr ReplicaSet kube-system
storage-provisioner <none> kube-system
或使用 jq
仅过滤静态 pods (kind == "Node"
):
$ kubectl get pods --all-namespaces -o json | jq -r '.items | map(select(.metadata.ownerReferences[]?.kind == "Node" ) | .metadata.name) | .[]'
etcd-minikube
kube-apiserver-minikube
kube-controller-manager-minikube
kube-scheduler-minikube
在 Kubernetes v1.16.3 上 metadata.ownerReferences.kind 不是问题,因此此处推荐的答案无效。 我能够通过使用以下命令查看 metadata.labels.tier key/value 对等于“控制平面”和 jq 来识别静态 Pods。
kubectl get pods --all-namespaces -o json | jq -r '.items | map(select(.metadata.labels.tier == "control-plane" ) | .metadata.name) | .[]'