Comandos fundamentales para administrar clústeres de Kubernetes

Configuración inicial de autocompletado

Para habilitar el autocompletado en el nodo maestro, instale el paquete y cargue la configuración temporalmente:


yum install -y bash-completion
source /usr/share/bash-completion/bash_completion

Para hacerlo persistente, añada la siguiente línea al archivo ~/.bashrc:


source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

Gestión de servicios del sistema

Componentes del nodo maestro

Después de modificar archivos de configuración, recargue el demonio de systemd:


systemctl daemon-reload

Iniciar, detener o reiniciar los servicios principales:


systemctl start kube-apiserver kube-controller-manager kube-scheduler
systemctl stop kube-apiserver kube-controller-manager kube-scheduler
systemctl restart kube-apiserver kube-controller-manager kube-scheduler

Consultar el estado de los componentes:


systemctl status kube-apiserver
systemctl status kube-controller-manager
systemctl status kube-scheduler

Servicio de etcd

Gestionar el servicio de base de datos distribuida:


systemctl daemon-reload
systemctl start etcd.service
systemctl stop etcd.service
systemctl restart etcd.service
systemctl status etcd.service

Componentes del nodo trabajador

Administrar los servicios en nodos trabajadores:


systemctl daemon-reload
systemctl start kubelet kube-proxy docker
systemctl stop kubelet kube-proxy docker
systemctl restart kubelet kube-proxy docker
systemctl status kubelet kube-proxy docker

Operaciones comunes con kubectl

Consultar la ayuda general del comando:


kubectl -h

Obtener ayuda para subcomandos específicos, por ejemplo para 'get':


kubectl get --help

Diferencia entre métodos de aplicación: 'kubectl replace' sustituye completamente el recurso, mientras que 'kubectl apply' realiza una actualización parcial (PATCH).

Consultas y listados

Listar nodos del clúster:


kubectl get nodes

Buscar pods por etiqueta:


kubectl get pods --selector aplicacion=redis

Mostrar información general del clúster:


kubectl cluster-info

Verificar el estado de los componentes del sistema:


kubectl -s http://localhost:8080 get componentstatuses

Listar pods con información extendida:


kubectl get pods -o wide

Obtener la definición YAML de los pods:


kubectl get pods -o yaml

Inspeccionar variables de entorno dentro de un pod:


kubectl exec mi-contenedor env

Revisar registros de contenedores:


kubectl logs -f pods/servicio-xyz -n espacio-nombres
kubectl logs --previous nombre-pod

Creación, actualización y eliminación

Crear recursos desde un archivo:


kubectl create -f definicion.yaml

Reemplazar recursos de forma forzada:


kubectl replace -f definicion.yaml --force

Eliminar recursos por nombre o archivo:


kubectl delete -f definicion.yaml
kubectl delete pod pod-ejemplo
kubectl delete deployment despliegue-app
kubectl delete service servicio-web
kubectl delete pods --all

Administración de nodos

Marcar un nodo como no programable:


kubectl cordon nodo1

Evacuar pods de un nodo antes del mantenimiento:


kubectl drain nodo1 --delete-local-data --ignore-daemonsets --force

Habilitar nuevamente la programación:


kubectl uncordon nodo1

Gestionar etiquetas de nodos:


kubectl get nodes --show-labels
kubectl label nodes nodo1 tipo-disco=ssd
kubectl label nodes nodo1 tipo-disco-

Versiones y despliegues

Actualizar la imagen de un despliegue:


kubectl set image deploy aplicacion-web contenedor=registro.cluster.com/app:v2

Revertir a una versión anterior:


kubectl rollout undo deployment/aplicacion-web
kubectl rollout status deployment/aplicacion-web

Consultar historial de versiones:


kubectl rollout history deploy/aplicacion-web
kubectl rollout history deploy/aplicacion-web --revision=3

Regresar a una revisión específica:


kubectl rollout undo deployment/aplicacion-web --to-revision=1

Comandos avanzados de kubectl

Obtener recursos de todo el clúster:


kubectl get services -A
kubectl get deployments -A
kubectl get pods -A -o wide

Describir detalles de un recurso:


kubectl describe service/servicio-api -n espacio-nombres
kubectl describe pod nombre-pod

Escalar réplicas de manera dinámica:


kubectl scale rc aplicacion --replicas=5
kubectl scale deployment aplicacion-web --replicas=3
kubectl scale --replicas=2 -f archivo-despliegue.yaml

Ejecutar comandos dentro de un contenedor:


kubectl exec -it mi-pod-12345 /bin/bash

Manipular etiquetas de recursos:


kubectl label nodes nodo1 zona=norte
kubectl label pod mi-pod-12345 rol=master
kubectl label pod mi-pod-12345 rol-
kubectl label pod mi-pod-12345 rol=backend --overwrite

Realizar actualizaciones continuas:


kubectl rolling-update servicio-db -f servicio-db-v2.yaml
kubectl rolling-update servicio-db --image=db:2.0
kubectl rolling-update servicio-db --image=db:1.0 --rollback

Cambiar el espacio de nombres predeterminado:


kubectl config set-context --current --namespace=kube-system

Verificar pods en el espacio de nombres actual:


kubectl get pods

Operaciones con etcdctl

Verificar la salud del clúster etcd:


etcdctl cluster-health
etcdctl --endpoints=https://192.168.1.100:2379 cluster-health

Listar miembros del clúster:


etcdctl member list

Configurar parámetros de red:


etcdctl set /k8s/red/config '{"Red": "10.2.0.0/16"}'
etcdctl get /k8s/red/config

Etiquetas: Kubernetes kubectl etcd systemctl administración de clústeres

Publicado el 7-13 05:33