Kubernetes cheat sheet
Algunos comandos frecuentes de k8s con parámetros
Aquí está mi k8s cheat sheet
que cubre los comandos más importantes de Kubernetes most important commands y conceptos desde la instalación hasta la ejecución de contenedores y la limpieza:
Instalación de Kubernetes
Usando Kubeadm
Para instalar Kubernetes usando kubeadm
, sigue estos pasos:
-
Preparar el entorno:
- Asegúrate de que los módulos del kernel necesarios estén habilitados:
sudo sysctl net/bridge/bridge-nf-call-ip6tables=1 sudo sysctl net/bridge/bridge-nf-call-iptables=1 sudo sysctl net/bridge/bridge-nf-call-arptables=1
- Reinicia el sistema para aplicar los cambios.
- Asegúrate de que los módulos del kernel necesarios estén habilitados:
-
Instalar Docker y otros requisitos previos:
- Instalar Docker:
sudo apt-get update sudo apt-get install -y docker.io
- Instalar
ebtables
yethtool
:sudo apt-get install ebtables ethtool
- Instalar soporte HTTPS y
curl
si es necesario:sudo apt-get update sudo apt-get install -y apt-transport-https curl
- Añadir el repositorio de Kubernetes e instalar
kubeadm
,kubelet
ykubectl
:curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - sudo cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb http://apt.kubernetes.io/ kubernetes-xenial main EOF sudo apt-get update sudo apt-get install -y kubeadm kubelet kubectl
- Instalar Docker:
-
Inicializar el clúster de Kubernetes:
- Inicializar el primer nodo de control:
sudo kubeadm init
- Unir nodos adicionales de control y trabajadores:
kubeadm join <control-plane-node>:8443 --token <token> --discovery-token-ca-cert-hash <hash>
- Inicializar el primer nodo de control:
Usando Minikube o Kind
Para desarrollo local, puedes usar minikube
o kind
:
-
Minikube:
minikube start
Sigue la guía oficial [Get Started! guide].
-
Kind:
curl -sfL https://get.k3s.io | sh - kind create cluster
Sigue la [Kind Quick Start page].
Comandos comunes de kubectl
Comandos básicos
-
Obtener información sobre recursos:
kubectl get <resource> # Listar recursos (por ejemplo, pods, servicios, despliegues) kubectl get pods --all-namespaces # Listar todos los pods en todos los namespaces kubectl get pods -o wide # Listar pods con más detalles kubectl get pod my-pod -o yaml # Obtener la configuración YAML de un pod.
-
Describir recursos:
kubectl describe <resource> # Descripción detallada de un recurso (por ejemplo, nodos, pods) kubectl describe nodes my-node kubectl describe pods my-pod.
-
Crear recursos:
kubectl create -f <manifest-file> # Crear recursos desde un archivo YAML o JSON kubectl create configmap <configmap-name> --from-literal=<key>=<value> # Crear un ConfigMap kubectl create secret generic <secret-name> --from-literal=<key>=<value> # Crear un Secret.
-
Eliminar recursos:
kubectl delete <resource> <name> # Eliminar un recurso (por ejemplo, pod, despliegue) kubectl delete pod my-pod kubectl delete deployment my-deployment.
Gestión de pods
-
Definir un comando y argumentos para un contenedor:
apiVersion: v1 kind: Pod metadata: name: command-demo spec: containers: - name: command-demo-container image: debian command: ["printenv"] args: ["HOSTNAME", "KUBERNETES_PORT"]
kubectl apply -f <manifest-file> kubectl get pods kubectl logs command-demo.
-
Ejecutar un comando en una shell:
apiVersion: v1 kind: Pod metadata: name: shell-demo spec: containers: - name: shell-demo-container image: debian command: ["/bin/sh"] args: ["-c", "while true; do echo hello; sleep 10;done"]
kubectl apply -f <manifest-file> kubectl get pods kubectl logs shell-demo.
Gestión de ConfigMap y Secret
-
Crear un ConfigMap:
kubectl create configmap <configmap-name> --from-literal=<key>=<value> kubectl create configmap app-config --from-literal=environment=production --from-literal=log_level=info.
-
Crear un Secret:
kubectl create secret generic <secret-name> --from-literal=<key>=<value> kubectl create secret generic db-secret --from-literal=username=admin --from-literal=password=supersecret.
Gestión de despliegues y servicios
-
Crear un despliegue:
kubectl create deployment <deployment-name> --image=<image-name> kubectl create deployment my-deployment --image=nginx:latest.
-
Exponer un despliegue como un servicio:
kubectl expose deployment <deployment-name> --type=NodePort --port=<port> kubectl expose deployment my-deployment --type=NodePort --port=80.
Gestión de namespace y nodos
-
Listar namespaces:
kubectl get namespaces
-
Crear un namespace:
kubectl create namespace <namespace-name> kubectl create namespace my-namespace.
-
Listar nodos:
kubectl get nodes kubectl get nodes --selector='!node-role.kubernetes.io/control-plane'.
Monitoreo y depuración
-
Ver logs:
kubectl logs <pod-name> kubectl logs -f <pod-name> # Seguir los logs en tiempo real.
-
Describir eventos:
kubectl describe events
-
Ver información del clúster:
kubectl cluster-info kubectl version # Ver la versión de Kubernetes.
Comandos avanzados
-
Ordenar recursos:
kubectl get pods --sort-by='.status.containerStatuses.restartCount' kubectl get services --sort-by=.metadata.name.
-
Filtrar recursos:
kubectl get pods --field-selector=status.phase=Running kubectl get nodes --selector='!node-role.kubernetes.io/control-plane'.
-
Recuperar datos específicos:
kubectl get configmap myconfig -o jsonpath='{.data.ca\.crt}' kubectl get secret my-secret --template='{{index .data "key-name-with-dashes"}}'.