Saltar a contenido

Día 01 - Crear un Pod en Kubernetes

Problema / Desafío

Se pide crear un pod con el nombre pod-httpd, usando la imagen httpd con el tag :latest, que tenga como label httpd_app y el contenedor se llame httpd-container.

Solución

apiVersion: v1
kind: Pod
metadata:
  name: pod-httpd
  labels:
    app: httpd_app
spec:
  containers:
    - name: httpd-container
      image: httpd:latest

Desglose del manifiesto

metadata: Es la sección donde definimos información de identificación del recurso. Aquí se asigna el name, que es el nombre único del pod dentro del namespace. Kubernetes usa este nombre para referenciar, buscar y gestionar el recurso.

labels: Son pares clave-valor que se asignan a los recursos para organizarlos y filtrarlos. A nivel de manifiesto (en metadata.labels), permiten agrupar y seleccionar pods con kubectl get pods -l app=httpd_app o vincularlos con otros recursos como Services o Deployments mediante selectores. Los contenedores dentro de spec.containers no tienen labels propios; los labels siempre se definen a nivel del recurso en metadata.

containers: Es la lista de contenedores que correrán dentro del pod. Cada contenedor define: - name: Identificador del contenedor dentro del pod, útil para referenciarlo en logs (kubectl logs pod-httpd -c httpd-container) o al ejecutar comandos dentro de él. - image: La imagen y su tag. El formato es imagen:tag, en este caso httpd:latest.

Aplicar y verificar

kubectl apply -f pod.yaml

# Ver estado del pod
kubectl get pod pod-httpd

# Ver detalles completos
kubectl describe pod pod-httpd

# Filtrar pods por label
kubectl get pods -l app=httpd_app

Troubleshooting

Problema Solución
Pod en estado ImagePullBackOff Verificar que la imagen httpd:latest existe y que el nodo tiene acceso al registry
Pod en estado Pending Revisar recursos disponibles con kubectl describe pod pod-httpd
Error de sintaxis YAML Validar antes de aplicar con kubectl apply --dry-run=client -f pod.yaml

Recursos