Me gustaría enumerar todos los pods de un espacio de nombres específico, pero solo aquellos que están controlados por la implementación. Intenté esto pero no tuve éxito: kubectl get pods --all-namespaces -o json | jq -r '.items | map(select(.metadata.ownerReferences == deployment ) | .metadata.name) | .[]'
Uso este comando: kubectl get pods -o=jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.spec.containers[*].name}{"\n"}{end}' --all-namespaces |sed 's/\t/\'$'\\/g' | sort | uniq para enumerar todos los contenedores y sus espacios de nombres, así que quiero lo mismo pero filtrando todos los tipos que no son implementaciones
Puede usar --custom-columns para averiguar qué pods están controlados y qué tipo de controlador es el propietario. Ejemplo:
$ kubectl get pods --all-namespaces -o custom-columns=NAME:.metadata.name,CONTROLLER:.metadata.ownerReferences[].kind,NAMESPACE:.metadata.namespace NAME CONTROLLER NAMESPACE nginx-858dbf7665-8t9vv 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-systemRecuerde que las implementaciones crean automáticamente conjuntos de réplicas y confían en ellos para administrar un conjunto de pods y su estado o réplicas deseadas. Entonces puedes filtrarlos:
$ kubectl get pods --all-namespaces -o json | jq -r '.items | map(select(.metadata.ownerReferences[]?.kind == "ReplicaSet" ) | .metadata.name) | .[]' nginx-858dbf7665-8t9vv coredns-74ff55c5b-xpgnq ingress-nginx-controller-65cf89dc4f-g7lwm metrics-server-58966dd6b9-schjrPor alguna razón kubectl get pods --all-namespaces -o custom-columns=NAME:.metadata.name,CONTROLLER:.metadata.ownerReferences[].kind,NAMESPACE:.metadata.namespace no funcionó para mí dando el siguiente error
zsh: no se encontraron coincidencias: custom-columns=NAME:.metadata.name,CONTROLADOR:.metadata.ownerReferences[].kind,NAMESPACE:.metadata.namespace
En cambio, funcionó bien: kubectl get pods -o custom-columns=NAME:.metadata.name,NAMESPACE:.metadata.namespace,Component:.metadata.ownerReferences\[\].kind