Kubernetes · Cheatsheet 01

Conceptos clave de Kubernetes

Docker corre contenedores en una máquina. Kubernetes los reparte en varias, los reinicia si se caen, los escala y los conecta. Vos describís lo que querés; el cluster se encarga de que pase.

1

Arquitectura de un cluster

Un control plane que decide y nodos que ejecutan. Vos solo hablás con la API.

get · apply · logs Vos kubectl ~/.kube/config Control plane el cerebro kube-apiserver puerta de entrada: todo pasa por acá etcd base de datos del estado deseado kube-scheduler elige en qué nodo corre cada Pod controller-manager corrige: estado real → deseado Nodo 1 (worker) runtime: containerd kubelet maneja los Pods kube-proxy reglas de red Pod chanchito 10.1.0.12 Pod chanchito 10.1.0.13 Nodo 2 (worker) runtime: containerd kubelet maneja los Pods kube-proxy reglas de red Pod chanchito 10.1.1.7 Pod monguito 10.1.1.8
i

En tu PC (Docker Desktop, minikube, kind) el control plane y el nodo son la misma máquina. La idea es igual.

i

Cada Pod tiene su propia IP dentro del cluster, pero es efímera: si el Pod se recrea, cambia.

✓

kubectl = el “docker CLI” de Kubernetes. Lee el cluster al que apunta desde ~/.kube/config.

2

Declarativo: estado deseado vs estado real

No decís “arrancá un contenedor”. Decís “quiero 3” y Kubernetes lo mantiene así para siempre.

Vos declarás replicas: 3 kubectl apply -f Estado deseado guardado en etcd 3 Pods chanchito Controller compara deseado 3 ≠ real 2 (un Pod se cayó) Estado real crea 1 Pod nuevo → 3 Pods ✓ bucle continuo (reconciliación)
i

Por eso si borrás un Pod de un Deployment vuelve a aparecer: el estado deseado sigue diciendo 3. Para bajarlo, cambiá el deseado (kubectl scale o editá el YAML) o borrá el Deployment.

3

Deployment → ReplicaSet → Pods

Vos escribís el Deployment. Lo demás lo crea Kubernetes.

Deployment chanchito replicas: 3 image: chanchito:1 strategy: RollingUpdate lo que vos escribís crea ReplicaSet chanchito-7d9f8 mantiene 3 Pods vivos (no se toca a mano) chanchito-7d9f8-x2k4 Pod · 10.1.0.12 chanchito-7d9f8-p8qz Pod · 10.1.0.13 chanchito-7d9f8-m3vt Pod · 10.1.1.7 Si un Pod muere, el ReplicaSet crea otro con nombre e IP nuevos. Nunca apuntes a la IP de un Pod: usá un Service
i

Un Pod es la unidad mínima: envuelve uno (o pocos) contenedores que comparten IP y volúmenes. Casi nunca se crean Pods sueltos: se crean con un Deployment.

4

Glosario de objetos

Los “kinds” que vas a ver en los YAML. Entre paréntesis, el nombre corto para kubectl.

Infraestructura

Cluster y Node (no)

El cluster es el conjunto de máquinas. Cada máquina es un nodo que corre Pods.

  • kubectl get nodes
Carga de trabajo

Pod (po)

Uno o más contenedores que comparten red (misma IP, se hablan por localhost) y volúmenes. Efímero.

  • ≈ un docker run
Carga de trabajo

Deployment (deploy)

Declara qué imagen y cuántas réplicas. Se encarga de recrear, escalar y actualizar sin cortes (rolling update).

  • Para apps sin estado (APIs, frontends)
Carga de trabajo

ReplicaSet (rs)

Mantiene N Pods idénticos vivos. Lo crea el Deployment; cada versión nueva genera un ReplicaSet nuevo (así funciona el rollback).

Red

Service (svc)

IP y nombre DNS fijos delante de un grupo de Pods (elegidos por labels). Balancea entre ellos.

  • Tipos: ClusterIP, NodePort, LoadBalancer
Red

Ingress (ing)

Entrada HTTP/HTTPS desde afuera: rutea por dominio y path hacia Services. Necesita un Ingress Controller instalado (ej. Traefik). Su sucesor es la Gateway API.

Configuración

ConfigMap (cm)

Configuración no sensible (URLs, flags, archivos de config) que se inyecta como variables de entorno o archivos.

Configuración

Secret

Como ConfigMap pero para contraseñas y tokens. Ojo: está en base64, no cifrado por defecto.

Almacenamiento

PersistentVolumeClaim (pvc)

Un “pedido” de disco (ej. 1Gi). El cluster lo satisface con un PersistentVolume (pv). ≈ volumen nombrado de Docker.

Organización

Namespace (ns)

Carpeta lógica para separar recursos (dev / prod / equipo). Los nombres son únicos dentro de un namespace.

  • Por defecto: default
Carga de trabajo

StatefulSet (sts) · DaemonSet (ds)

StatefulSet: Pods con nombre e identidad estables y disco propio (bases de datos). DaemonSet: un Pod en cada nodo (logs, monitoreo).

Carga de trabajo

Job · CronJob (cj)

Job: corre hasta terminar (migraciones, scripts). CronJob: un Job programado ("0 3 * * *").

5

Lo que ya sabés de Docker, en Kubernetes

Traducción directa para tus proyectos.

Docker / Compose → Kubernetes

En DockerEn KubernetesNota
docker runPodEn la práctica, siempre vía Deployment
Un servicio del composeDeployment + ServiceEl Deployment corre los Pods, el Service les da nombre
docker-compose.ymlManifiestos YAML (uno o varios)Separados con ---
docker compose up -dkubectl apply -f k8s/Crea o actualiza todo lo de la carpeta
docker compose downkubectl delete -f k8s/Los PVC se borran si están en esos archivos
ports: "3000:3000"Service NodePort / Ingress / port-forwardPara pruebas: kubectl port-forward
Nombre del servicio como hostNombre del Service como hostmonguito:27017 sigue funcionando
environment:env / ConfigMap / SecretSecrets para contraseñas
volumes: mongo-data:/data/dbPVC + volumeMountsMismo path dentro del contenedor
restart: unless-stoppedAutomático en DeploymentLos Pods se recrean solos
depends_onNo existeUsar readinessProbe, reintentos o initContainers
docker pskubectl get pods
docker logs -fkubectl logs -f
docker exec -it … shkubectl exec -it … -- shOjo con el --
docker buildSigue siendo docker buildKubernetes no construye imágenes, solo las corre