secrets delete configmap kubernetes

delete - kubernetes restart deployment



¿Cómo puedes enumerar de forma clara todos los contenedores en un pod kubernetes? (6)

Estoy buscando enumerar todos los contenedores en un pod en una secuencia de comandos que recopila los registros después de ejecutar una prueba. kubectl describe pods -l k8s-app=kube-dns devuelve mucha información, pero solo estoy buscando una devolución como:

etcd kube2sky skydns

No veo una forma sencilla de formatear la salida de descripción. ¿Hay otro comando? (y supongo que en el peor de los casos siempre hay un análisis de la salida de describir).


Responder

kubectl get pods POD_NAME_HERE -o jsonpath=''{.spec.containers[*].name}''

Explicación

Esto obtiene el objeto JSON que representa el pod. A continuación, utiliza JSONpath de JSONpath para extraer el nombre de cada contenedor del pod.


Corte rápido para evitar la construcción de la consulta JSONpath para un solo pod:

$ kubectl logs mypod-123 a container name must be specified for pod mypod-123, choose one of: [etcd kubesky skydns]


Lo uso para mostrar versiones de imágenes en las cápsulas.

kubectl get pods -o=jsonpath=''{range .items[*]}{"/n"}{.metadata.name}{":/t"}{range .spec.containers[*]}{.image}{end}{end}'' && printf ''/n''

Es solo una pequeña modificación del script desde here , con la adición de una nueva línea para iniciar el siguiente comando de la consola en la nueva línea, las comas eliminadas al final de cada línea y una lista de solo mis pods, sin pods de servicio (por ejemplo --all-namespaces opción --all-namespaces is remoto).


Puede usar get y elegir una de las plantillas de salida admitidas con el --output ( -o ).

Tome jsonpath por ejemplo, kubectl get pods -l k8s-app=kube-dns -o jsonpath={.items[*].spec.containers[*].name} etcd kube2sky skydns kubectl get pods -l k8s-app=kube-dns -o jsonpath={.items[*].spec.containers[*].name} le proporciona etcd kube2sky skydns .

Otras plantillas de salida de salida compatibles son go-template, go-template-file, jsonpath-file. Consulte http://kubernetes.io/docs/user-guide/jsonpath/ para saber cómo usar la plantilla jsonpath. Consulte https://golang.org/pkg/text/template/#pkg-overview para https://golang.org/pkg/text/template/#pkg-overview cómo usar la plantilla go.

Actualización: consulte este documento para ver otros comandos de ejemplo para listar imágenes de contenedor: https://kubernetes.io/docs/tasks/access-application-cluster/list-all-running-container-images/


Si desea una salida clara de qué contenedores son de cada Pod

kubectl get po -l k8s-app=kube-dns / -o=custom-columns=NAME:.metadata.name,CONTAINERS:.spec.containers[*].name


Si utiliza json como formato de salida de kubectl get , obtendrá muchos detalles de un pod . Con los procesadores json como jq es fácil seleccionar o filtrar ciertas partes que le interesan.

Para listar los contenedores de un pod, la consulta jq ve así:

kubectl get --all-namespaces --selector k8s-app=kube-dns --output json pods / | jq --raw-output ''.items[].spec.containers[].name''

Si desea ver todos los detalles relacionados con un contenedor específico, intente algo como esto:

kubectl get --all-namespaces --selector k8s-app=kube-dns --output json pods / | jq ''.items[].spec.containers[] | select(.name=="etcd")''