Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2024-09-10 GMT+08:00

Comandos comunes de kubectl

Pasos iniciales

get

El comando get muestra uno o varios recursos de un clúster.

Este comando imprime una tabla con la información más importante sobre todos los recursos, incluidos los nodos del clúster, los pods en ejecución, las Deployments y los Services.

Un clúster puede tener varios espacios de nombres. Si no se especifica ningún espacio de nombres, este comando se ejecutará con el indicador --namespace=default.

Por ejemplo:

Para enumerar todos los pods con información detallada:

kubectl get po -o wide

Para mostrar los pods en todos los espacios de nombres:

kubectl get po --all-namespaces

Para enumerar las etiquetas de los pods en todos los espacios de nombres:

kubectl get po --show-labels

Para listar todos los espacios de nombres del nodo:

kubectl get namespace

Para listar información de otros nodos, ejecute este comando con el indicador -s. Para mostrar un tipo de recurso especificado, agregue el tipo de recurso a este comando, por ejemplo, kubectl get svc, kubectl get nodes y kubectl get deploy.

Para enumerar un pod con un nombre especificado en el formato de salida YAML:

kubectl get po <podname> -o yaml

Para enumerar un pod con un nombre especificado en formato de salida JSON:

kubectl get po <podname> -o json
kubectl get po rc-nginx-2-btv4j -o=custom-columns=LABELS:.metadata.labels.app

LABELS indica una lista separada por comas de títulos de columna definidos por el usuario. metadata.labels.app indica los datos a listar en formato de salida YAML o JSON.

create

El comando create crea un recurso de clúster a partir de un archivo o entrada.

Si ya hay un descriptor de recurso (un archivo YAML o JSON), puede crear el recurso desde el archivo ejecutando el siguiente comando:

kubectl create -f filename

expose

El comando expose expone un recurso como un nuevo servicio de Kubernetes. Los recursos posibles incluyen un pod, Service y Deployment.

kubectl expose deployment deployname --port=81 --type=NodePort --target-port=80 --name=service-name

En el comando anterior, --port indica el puerto expuesto por el Service, --type indica el tipo de Service y --target-port indica el puerto del pod que respalda el Service. Visitar ClusterIP:Port le permite acceder a las aplicaciones del clúster.

run

Por ejemplo:

Para ejecutar una imagen concreta en el clúster:

kubectl run deployname --image=nginx:latest

Para ejecutar una imagen concreta con un comando especificado:

kubectl run deployname -image=busybox --command -- ping baidu.com

set

El comando set configura los recursos de objeto.

Por ejemplo:

Para cambiar la imagen de un despliegue con el nombre especificado en deployname a la imagen 1.0:

kubectl set image deploy deployname containername=containername:1.0

edit

El comando edit edita un recurso del editor predeterminado.

Por ejemplo:

Para actualizar un pod:

kubectl edit po po-nginx-btv4j

El comando de ejemplo produce el mismo efecto que el siguiente comando:

kubectl get po po-nginx-btv4j -o yaml >> /tmp/nginx-tmp.yaml
vim /tmp/nginx-tmp.yaml
/*do some changes here */
kubectl replace -f /tmp/nginx-tmp.yaml

explain

El comando explain visualiza documentos o documentos de referencia.

Por ejemplo:

Para obtener la documentación de los pods:

kubectl explain pod

delete

El comando delete elimina los recursos por nombre de recurso o etiqueta.

Por ejemplo:

Para eliminar un pod con un retraso mínimo:

kubectl delete po podname --now 
kubectl delete -f nginx.yaml
kubectl delete deployment deployname

Comandos de despliegue

rolling-update*

rolling-update es un comando muy importante. Actualiza un servicio en ejecución sin tiempo de inactividad. Los pods son reemplazados incrementalmente por otros nuevos. Un pod se actualiza a la vez. El pod antiguo se elimina solo después de que el nuevo pod esté activado. Los pods nuevos deben ser distintos de los pods antiguos por nombre, versión y etiqueta. De lo contrario, se informará de un mensaje de error.

kubectl rolling-update poname -f newfilename
kubectl rolling-update poname -image=image:v2

Si se produce algún problema durante la actualización continua, ejecute el comando con el indicador -rollback para cancelar la actualización continua y volver al pod anterior.

kubectl rolling-update poname -rollback

rollout

El comando rollout gestiona el lanzamiento de un recurso.

Por ejemplo:

Para comprobar el estado de despliegue de un lanzamiento concreto:

kubectl rollout status deployment/deployname

Para ver el historial de despliegue de un lanzamiento concreto:

kubectl rollout history deployment/deployname

Para volver al despliegue anterior: (de forma predeterminada, un recurso se revierte a la versión anterior)

kubectl rollout undo deployment/test-nginx

scale

El comando scale establece un nuevo tamaño para un recurso ajustando el número de réplicas de recursos.

kubectl scale deployment deployname --replicas=newnumber

autoscale

El comando autoscale selecciona y establece automáticamente el número de pods. Este comando especifica el rango para el número de réplicas de pod mantenidas por un controlador de replicación. Si hay demasiados pods, el controlador de replicación termina los pods adicionales. Si hay muy pocos, el controlador de replicación inicia más pods.

kubectl autoscale deployment deployname --min=minnumber --max=maxnumber

Comandos de gestión de clústeres

cordon, drain, uncordon*

Si un nodo que se va a actualizar está ejecutando muchos pods o ya está inactivo, realice los siguientes pasos para preparar el nodo para el mantenimiento:

  1. Ejecute el comando cordon para marcar un nodo como no programado. Esto significa que los nuevos pods no se programarán en el nodo.

    kubectl cordon nodename

    Nota: En CCE, el nodename indica la dirección IP de red privada de un nodo.

  2. Ejecute el comando drain para migrar sin problemas los pods en ejecución desde el nodo a otro nodo.

    kubectl drain nodename --ignore-daemonsets --ignore-emptydir

    ignore-emptydir ignora los pods que usan emptyDirs.

  3. Realice operaciones de mantenimiento en el nodo, como actualizar el núcleo y actualizar Docker.
  4. Una vez completado el mantenimiento del nodo, ejecute el comando uncordon para marcar el nodo como programable.

    kubectl uncordon nodename

cluster-info

Para mostrar los complementos que se ejecutan en el clúster:

kubectl cluster-info

Para volcar la información actual del clúster a stdout:

kubectl cluster-info dump

top*

El comando top muestra el uso de recursos (CPU/memoria/almacenamiento). Este comando requiere que Heapster esté configurado correctamente y funcione en el servidor.

taint*

El comando taint actualiza las manchas en uno o más nodos.

certificate*

El comando certificate modifica los recursos del certificado.

Comandos de diagnóstico y depuración de fallas

describe

El comando describe es similar al comando get. La diferencia es que el comando describe muestra detalles de un recurso o grupo de recursos específicos, mientras que el comando get enumera uno o más recursos de un clúster. El comando describe no admite el indicador -o. Para los recursos del mismo tipo, los detalles de los recursos se imprimen en el mismo formato.

Si se consulta la información sobre un recurso, puede utilizar el comando get para obtener información más detallada. Si desea comprobar el estado de un recurso específico, por ejemplo, para comprobar si un pod está en estado en ejecución, ejecute el comando describe para mostrar información de estado más detallada.

kubectl describe po <podname>

logs

El comando logs imprime los logs de un contenedor en un pod o recurso especificado en stdout. Para mostrar los logs en el modo tail -f, ejecute este comando con el indicador -f.

kubectl logs -f podname

exec

El comando de kubectl exec es similar al comando de Docker exec y ejecuta un comando en un contenedor. Si hay varios contenedores en un pod, utilice el indicador -c para elegir un pod.

kubectl exec -it podname bash
kubectl exec -it podname -c containername bash

port-forward*

El comando port-forward reenvía uno o más puertos locales a un pod.

Por ejemplo:

Para escuchar en los puertos 5000 y 6000 localmente, reenviando datos hacia/desde los puertos 5000 y 6000 en el pod:

kubectl port-forward podname 5000:6000

proxy*

El comando proxy crea un servidor proxy entre localhost y el servidor de API de Kubernetes.

Por ejemplo:

Para habilitar las API de REST HTTP en el nodo principal:

kubectl proxy -accept-hosts= '.*' -port=8001 -address= '0.0.0.0'

cp

El comando cp copia archivos y directorios desde y hacia contenedores.

cp filename newfilename

auth*

El comando auth inspecciona la autorización.

attach*

El comando attach es similar al comando logs -f y se conecta a un proceso que ya se está ejecutando dentro de un contenedor existente. Para salir, ejecute el comando ctrl-c. Si un pod contiene los contenedores múltiples, para ver la salida de un contenedor específico, utilice el indicador -c y el containername después de podname para especificar un contenedor.

kubectl attach podname -c containername

Comandos avanzados

replace

El comando replace actualiza o reemplaza un recurso existente por atributos, incluido el número de réplicas, etiquetas, versiones de imagen y puertos. Puede modificar directamente el archivo YAML original y luego ejecutar el comando replace.

kubectl replace -f filename

Los nombres de recursos no se pueden actualizar.

apply*

El comando apply proporciona un control más estricto sobre la actualización de recursos que los comandos patch y edit. El comando apply aplica una configuración a un recurso y mantiene un conjunto de archivos de configuración en el control de origen. Siempre que hay una actualización, el archivo de configuración se envía al servidor y, a continuación, el comando apply kubectl aplica la última configuración al recurso. Kubernetes compara el nuevo archivo de configuración con el original y actualiza solo la configuración modificada en lugar de todo el archivo. La configuración que no está contenida en el indicador -f permanecerá sin cambios. A diferencia del comando replace que elimina el recurso y crea uno nuevo, el comando apply actualiza directamente el recurso original. Similar a la operación git, el comando apply agrega una anotación al recurso para marcar la aplicación actual.

kubectl apply -f

patch

Si desea modificar los atributos de un contenedor en ejecución sin eliminar primero el contenedor o usar el comando replace, el comando patch es para el rescate. El comando patch actualiza los campo(s) de un recurso mediante un parche de fusión estratégica, un parche de fusión JSON o un parche JSON. Por ejemplo, para cambiar una etiqueta de pod de app=nginx1 a app=nginx2 mientras el pod se está ejecutando, utilice el siguiente comando:

kubectl patch pod podname -p '{"metadata":{"labels":{"app":"nginx2"}}}'

convent*

El comando convert convierte los archivos de configuración entre diferentes versiones de API.

Comandos de configuración

label

El comando label actualiza las etiquetas de un recurso.

kubectl label pods my-pod new-label=newlabel

annotate

El comando annotate actualiza las anotaciones de un recurso.

kubectl annotate pods my-pod icon-url=http://......

completion

El comando completion proporciona autocompletado para el shell.

Otros Comandos

api-versions

El comando api-versions imprime las versiones de API admitidas.

kubectl api-versions

api-resources

El comando api-resources imprime los recursos de API admitidos.

kubectl api-resources

config*

El comando config modifica los archivos kubeconfig. Un ejemplo de caso de uso de este comando es configurar la información de autenticación en las invocaciones a la API.

help

El comando help obtiene todas las referencias de comandos.

version

El comando version imprime la información de la versión del cliente y del servidor para el contexto actual.

kubectl version