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