técnica
etapa: provision
2 min de lectura
Fundamentos de Kubernetes
Kubernetes ejecuta contenedores en un clúster y los mantiene en el estado que declaraste. Aprende los pocos objetos que importan y los ajustes que evitan que un pod malo tumbe todo.
kubectlHelm / Kustomizek9skind / minikubeKyverno / OPA GatekeeperArgo CD
Los objetos principales
- Pod: uno o más contenedores que corren juntos y comparten una identidad de red. La unidad más pequeña que despliegas, y desechable.
- Deployment: declara cuántas réplicas de un pod ejecutar y cómo desplegar los cambios. Un ReplicaSet por debajo mantiene la cuenta.
- Service: un nombre y una dirección estables que balancean carga hacia los pods correspondientes, que van y vienen.
- Ingress o Gateway: enruta el tráfico externo por host y ruta hacia los services.
- ConfigMap y Secret: configuración y valores sensibles inyectados como variables de entorno o archivos. Un Secret está codificado, no cifrado por defecto; protégelo con cifrado en reposo y acceso restringido.
- Namespace: un ámbito para nombres, cuotas y reglas de acceso, usado para separar equipos o entornos.
- El control loop: tú declaras el estado deseado; los controllers hacen que el estado real coincida de forma continua.
Un deployment que vale la pena ejecutar
Define requests y limits de recursos, probes de salud, una estrategia de rollout y un security context restringido. Esa es la diferencia entre un pod que se porta bien y uno que te sorprende.
apiVersion: apps/v1
kind: Deployment
metadata:
name: api
spec:
replicas: 3
selector:
matchLabels: { app: api }
strategy:
rollingUpdate: { maxUnavailable: 0, maxSurge: 1 }
template:
metadata:
labels: { app: api }
spec:
securityContext:
runAsNonRoot: true
seccompProfile: { type: RuntimeDefault }
containers:
- name: api
image: registry.example.com/api@sha256:<digest>
ports: [{ containerPort: 8080 }]
resources:
requests: { cpu: 100m, memory: 128Mi }
limits: { memory: 256Mi }
readinessProbe:
httpGet: { path: /ready, port: 8080 }
livenessProbe:
httpGet: { path: /health, port: 8080 }
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities: { drop: ["ALL"] }Comandos del día a día
Prefiere cambiar el clúster mediante control de versiones y un controller GitOps, y deja kubectl para lectura y emergencias.
kubectl get pods -n prod -o wide
kubectl describe pod api-7c9d -n prod # los eventos explican la mayoría de las fallas
kubectl logs deploy/api -n prod --tail=100 -f
kubectl rollout status deploy/api -n prod
kubectl rollout undo deploy/api -n prod # vuelve a la revisión anterior
kubectl top pods -n prodErrores comunes
- Sin límites de recursos: un pod deja sin recursos a sus vecinos.
- Liveness probes que dependen de servicios externos, reiniciando pods sanos durante una caída.
- Usar tags latest o mutables, de modo que reiniciar un pod cambia la versión.
- Todo en el namespace default, con permisos a nivel de clúster para cada workload.
- Tratar el clúster como aquello que operas, en lugar de la plataforma que usan tus equipos.
conexiones en el mapa
- Contenedores e imágeneses programado porFundamentos de Kubernetes
- Estrategias de release y rollbackcorre sobreFundamentos de Kubernetes
- Infraestructura como códigoaprovisionaFundamentos de Kubernetes
- Fundamentos de Kuberneteses observado porObservabilidad: métricas, logs y traces
actualizado el 14/10/2026 · fuentes para profundizar · reportar un error
en otros dominios
- Containers - imágenes y cadena de suministrocloudsecel mismo clúster visto como plataforma y como superficie de ataque
Estudia antes
Desbloquea
pon a prueba lo que entendiste
Cargando preguntas…