#kubernetes #kubectl #kubernetes-pod
#kubernetes #kubectl #kubernetes-pod
Вопрос:
У меня есть несколько модулей в 2 узлах в моем кластере Kubernetes. (Пожалуйста, смотрите ниже).
Есть ли способ определить, какие из них являются статическими модулями? (может 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>
Комментарии:
1. Можете ли вы проверить ссылку на владельца статического модуля через describe, чтобы узнать, имеет ли он особое значение? Я полагаю, он не должен принадлежать набору реплик, но у меня сейчас нет доступа к кластеру, чтобы проверить мое дело
2. Вы на 100% правы!
3. Управляется: ReplicaSet/ coredns-f9fd979d6 ИЛИ управляется: Node / controlplane . Если вы добавите это в качестве ответа, я отмечу его как правильный ответ. Спасибо!
Ответ №1:
Проверка ссылки владельца статического модуля с помощью kubectl describe
command должна указывать на то, что такой модуль управляется не a ReplicaSet
, а скорее из Node/controlplane
Комментарии:
1. Также: к имени статических модулей всегда добавляется -${NODENAME}, указывающий, какой узел управляет этим статическим модулем.
Ответ №2:
Вы можете фильтровать по OwnerReference.Kind
. Статические модули имеют Node
вид ownerReference .
Вы можете использовать --custom-columns
для составления списка всех ваших модулей и ссылок на их владельцев. Пример:
$ 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
для фильтрации только статических модулей ( 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
Комментарии:
1. К вашему сведению — Добавить столбец для имени узла и grep для узла:
kubectl get pods -A -o custom-columns=NAME:.metadata.name,CONTROLLER:.metadata.ownerReferences[].kind,NAMESPACE:.metadata.namespace,NODE:.spec.nodeName | grep Node
Ответ №3:
В Kubernetes версии v1.16.3 metadata.ownerReferences.kind — это не вещь, поэтому рекомендуемый ответ здесь не сработал. Я смог идентифицировать статические модули, просмотрев пару metadata.labels.tier ключ / значение с равным «control-plane» с помощью jq, используя следующее.
kubectl get pods --all-namespaces -o json | jq -r '.items | map(select(.metadata.labels.tier == "control-plane" ) | .metadata.name) | .[]'
Комментарии:
1. Статические модули не обязательно имеют определенную метку и не обязательно должны находиться на ваших главных узлах.