Conceptos de Kubernetes para Azure
Repase las construcciones principales de Kubernetes —pods, implementaciones, servicios y espacios de nombres— y comprenda cómo AKS administra el plano de control en su nombre.
Conceptos de Kubernetes para Azure es una lección gratuita de Cloud & IT Cert Prep en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cloud & IT Cert Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cloud & IT Cert Prep incluye 4 lecciones en total.
¿Qué es Kubernetes?
Kubernetes (K8s) es una plataforma de orquestación de contenedores de código abierto desarrollada originalmente por Google. Automatiza la implementación, el escalado y la administración de aplicaciones en contenedores. En lugar de ejecutar los contenedores manualmente, se declara el estado deseado de la aplicación en manifiestos YAML y Kubernetes trabaja continuamente para hacer coincidir el estado real con el estado deseado: reinicia los contenedores que han fallado, programa las cargas de trabajo en nodos en buen estado y escala las réplicas.
Arquitectura del clúster: plano de control y nodos
Un clúster de Kubernetes consta de un plano de control y nodos de trabajo. El plano de control contiene el servidor de API (punto de entrada para todos los comandos de kubectl), etcd (almacén de estado distribuido), el programador (asigna pods a los nodos) y el administrador de controladores (mantiene el estado deseado). Los nodos de trabajo ejecutan kubelet (agente del nodo), kube-proxy (reglas de red) y un tiempo de ejecución de contenedores (containerd). En AKS, Microsoft administra el plano de control; usted solo administra los nodos de trabajo.
# Kubernetes control plane components
# kube-apiserver - REST API for all cluster operations
# etcd - Distributed key-value store (cluster state)
# kube-scheduler - Assigns pending pods to nodes
# kube-controller-manager - Runs reconciliation controllers
# Worker node components
# kubelet - Node agent, ensures containers run
# kube-proxy - Network routing for services
# containerd - Container runtime (runs containers)Pods: la unidad implementable más pequeña
Un pod es la unidad implementable más pequeña de Kubernetes. Un pod agrupa uno o más contenedores que comparten un espacio de nombres de red (la misma dirección IP), volúmenes de almacenamiento y ciclo de vida. Los contenedores de un pod se comunican mediante localhost. Los pods son efímeros: cuando fallan, se sustituyen por pods nuevos con direcciones IP diferentes. Rara vez se crean pods directamente; en su lugar, se crean recursos de nivel superior que los administran.
# Simple pod manifest
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp
image: mycontainerregistry.azurecr.io/myapp:v1.0
ports:
- containerPort: 80
resources:
requests:
cpu: '100m'
memory: '128Mi'
limits:
cpu: '500m'
memory: '512Mi'Implementaciones: administración de ReplicaSets
Una Deployment es la forma estándar de ejecutar aplicaciones sin estado en Kubernetes. Crea y administra un ReplicaSet que mantiene el número deseado de réplicas de pods idénticas. Las implementaciones admiten actualizaciones graduales, que sustituyen poco a poco los pods antiguos por otros nuevos, y reversiones a versiones anteriores. Usted describe la plantilla del pod y el número de réplicas deseados; Kubernetes se encarga del resto.
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 3
selector:
matchLabels:
app: myapp
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1 # Create 1 extra pod during update
maxUnavailable: 0 # Never reduce below desired count
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: mycontainerregistry.azurecr.io/myapp:v1.0
ports:
- containerPort: 80Servicios: puntos de conexión de red estables
Dado que los pods son efímeros y sus direcciones IP cambian, los Services proporcionan un punto de conexión de red estable que distribuye la carga del tráfico entre los pods coincidentes. El servicio usa un selector de etiquetas para encontrar los pods. Tipos de servicio: ClusterIP (solo interno, predeterminado), NodePort (expone un puerto en cada nodo), LoadBalancer (aprovisiona un Azure Load Balancer con una IP pública) y ExternalName (alias DNS de un servicio externo).
# Service exposing myapp pods externally
apiVersion: v1
kind: Service
metadata:
name: myapp-svc
spec:
type: LoadBalancer # Creates Azure Load Balancer
selector:
app: myapp # Routes traffic to pods with this label
ports:
- port: 80 # Service port
targetPort: 80 # Pod/container port
# After creation, check the EXTERNAL-IP (Azure LB public IP)
# kubectl get service myapp-svcEspacios de nombres para varios inquilinos
Los Namespaces dividen un único clúster de Kubernetes en varios clústeres virtuales. Los recursos de distintos espacios de nombres se aíslan por nombre; puede tener simultáneamente una implementación myapp en los espacios de nombres development y production. Los espacios de nombres son la unidad principal para aplicar RBAC, cuotas de recursos y políticas de red a un equipo o entorno. Los espacios de nombres predeterminados incluyen default, kube-system y kube-public.
# Create a namespace for the dev team
kubectl create namespace dev-team
# Deploy into a specific namespace
kubectl apply -f deployment.yaml --namespace dev-team
# List all resources in a namespace
kubectl get all --namespace dev-team
# Set default namespace for current context
kubectl config set-context --current --namespace dev-teamConfigMaps y Secrets
Los ConfigMaps almacenan datos de configuración no confidenciales como pares clave-valor o archivos, que se inyectan en los pods como variables de entorno o montajes de volúmenes. Los Secrets almacenan datos confidenciales (contraseñas y tokens) codificados en base64 (no cifrados de forma predeterminada; para obtener un cifrado real en reposo, use Azure Key Vault Provider for Secrets Store CSI Driver). Ambos están delimitados por espacio de nombres y se referencian por nombre en las especificaciones de los pods.
# Create a ConfigMap from literal values
kubectl create configmap app-config \
--from-literal=APP_ENV=production \
--from-literal=LOG_LEVEL=info
# Create a Secret
kubectl create secret generic db-secret \
--from-literal=DB_PASSWORD='super-secret'
# Reference in a pod spec
# env:
# - name: APP_ENV
# valueFrom:
# configMapKeyRef:
# name: app-config
# key: APP_ENV
# - name: DB_PASSWORD
# valueFrom:
# secretKeyRef:
# name: db-secret
# key: DB_PASSWORDVolúmenes persistentes en Azure
Las aplicaciones con estado necesitan un almacenamiento que sobreviva a los pods individuales. Kubernetes usa PersistentVolumes (PVs) y PersistentVolumeClaims (PVCs) para desvincular el almacenamiento del ciclo de vida de los pods. En AKS, las clases de almacenamiento integradas Azure Disk y Azure Files aprovisionan automáticamente discos administrados y recursos compartidos de archivos cuando se crea un PVC. Azure Disk está pensado para el acceso de un solo pod; Azure Files permite que varios pods lean y escriban simultáneamente.
# PersistentVolumeClaim using Azure Disk
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-disk-pvc
spec:
accessModes:
- ReadWriteOnce # Single-node read/write (Azure Disk)
storageClassName: managed-csi
resources:
requests:
storage: 10Gi
# Mount in a pod
# volumes:
# - name: data
# persistentVolumeClaim:
# claimName: my-disk-pvc
# volumeMounts:
# - name: data
# mountPath: /dataHorizontal Pod Autoscaler
El Horizontal Pod Autoscaler (HPA) ajusta automáticamente el número de réplicas de pods de una implementación en función del uso observado de CPU o memoria, o de métricas personalizadas. El controlador HPA consulta el servidor de métricas cada 15 segundos y aumenta o reduce las réplicas para mantener el uso cerca del objetivo. Puede establecer cantidades mínimas y máximas de réplicas como límites de seguridad para evitar un escalado descontrolado.
# Create an HPA targeting 50% CPU utilisation
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: myapp-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: myapp
minReplicas: 2
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50Comprobaciones de estado: sondas de actividad y disponibilidad
Kubernetes usa probes para supervisar el estado de los contenedores. Una sonda de actividad comprueba si un contenedor sigue en ejecución; si falla, Kubernetes reinicia el contenedor. Una sonda de disponibilidad comprueba si un contenedor está listo para atender tráfico; si falla, el pod se retira del equilibrio de carga del servicio sin reiniciarlo. Una sonda de inicio retrasa las demás sondas hasta que la aplicación se ha inicializado, lo que evita reinicios prematuros durante un inicio lento.
livenessProbe:
httpGet:
path: /health
port: 80
initialDelaySeconds: 15
periodSeconds: 20
failureThreshold: 3
readinessProbe:
httpGet:
path: /ready
port: 80
initialDelaySeconds: 5
periodSeconds: 10
failureThreshold: 3
startupProbe:
httpGet:
path: /startup
port: 80
failureThreshold: 30
periodSeconds: 10 # Allow 300s for slow startupSolicitudes y límites de recursos
Cada contenedor de Kubernetes debe declarar solicitudes de recursos (la asignación mínima garantizada que usa el programador) y límites (el máximo permitido, a partir del cual el contenedor se ralentiza o finaliza). Las solicitudes de CPU se expresan en milinúcleos (m): 1000m = 1 núcleo de CPU. Establecer correctamente las solicitudes y los límites evita los problemas de vecinos ruidosos y permite que el programador distribuya los pods de forma eficiente entre los nodos sin sobreasignar recursos.
resources:
requests:
cpu: '250m' # 0.25 CPU core guaranteed
memory: '256Mi' # 256 MiB guaranteed
limits:
cpu: '1' # Max 1 CPU core
memory: '512Mi' # Max 512 MiB (OOMKilled if exceeded)Comprobación rápida
Compruebe su comprensión de los conceptos de Microsoft Azure Fundamentals (AZ-900) tratados en esta lección.
Resumen de la lección
En esta lección ha aprendido que los pods son las unidades desplegables más pequeñas que comparten red y almacenamiento; los Deployments administran conjuntos de réplicas sin estado y admiten actualizaciones graduales; y los Services proporcionan endpoints estables que distribuyen el tráfico entre pods efímeros. A continuación, exploraremos el despliegue de cargas de trabajo en AKS.
Preguntas frecuentes
¿La lección «Conceptos de Kubernetes para Azure» es gratis?
Sí — el texto completo de «Conceptos de Kubernetes para Azure» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cloud & IT Cert Prep, actualiza a CoddyKit PRO. El curso de Cloud & IT Cert Prep incluye 4 lecciones en total.
¿Qué aprenderé en «Conceptos de Kubernetes para Azure»?
Repase las construcciones principales de Kubernetes —pods, implementaciones, servicios y espacios de nombres— y comprenda cómo AKS administra el plano de control en su nombre. Practicas Cloud & IT Cert Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Cloud & IT Cert Prep?
No se requiere experiencia previa. Cloud & IT Cert Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Conceptos de Kubernetes para Azure»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Cloud & IT Cert Prep?
Sí. Cada lección de Cloud & IT Cert Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Azure Container Registry
- Azure Container Instances
- Conceptos de Kubernetes para Azure
- Implementación de cargas de trabajo en AKS