¿Qué son los pods de Kubernetes?
Un pod es la unidad de ejecución más pequeña de Kubernetes y encapsula una o más aplicaciones. Los pods son efímeros por naturaleza; si un pod (o el nodo en el que se ejecuta) falla, Kubernetes puede crear automáticamente una nueva réplica de ese pod para continuar con las operaciones. Los pods incluyen uno o más contenedores (por ejemplo, contenedores de Docker).
Los pods también proporcionan dependencias del entorno, incluidos volúmenes de almacenamiento persistente (almacenamiento permanente y disponible para todos los pods del clúster) y datos de configuración necesarios para ejecutar los contenedores dentro del pod.

Kubernetes en 5 minutos

La situación de Kubernetes 2023
¿Para qué sirve un pod?
Los pods representan los procesos que se ejecutan en un clúster. Al limitar los pods a un solo proceso, Kubernetes puede generar informes sobre el estado de cada proceso que se ejecuta en el clúster. Los pods tienen:
- Una dirección IP única (que les permite comunicarse entre sí)
- Volúmenes de almacenamiento persistente (según sea necesario)
- Información de configuración que determina cómo debe ejecutarse un contenedor
Aunque la mayoría de los pods contienen un solo contenedor, muchos tienen varios que funcionan en conjunto para ejecutar la función deseada.
¿Cuáles son las ventajas de un pod?
Cuando los pods contienen varios contenedores, se simplifican las comunicaciones y el uso compartido de datos entre ellos. Dado que todos los contenedores de un pod comparten el mismo espacio de nombres de red, pueden localizarse y comunicarse entre sí a través de localhost. Los pods pueden comunicarse entre sí mediante la dirección IP de otro pod o haciendo referencia a un recurso que reside en otro pod.
Los pods pueden incluir contenedores que se ejecutan cuando se inicia, por ejemplo, para realizar el inicio necesario antes de que se ejecuten los contenedores de la aplicación. Además, los pods simplifican la escalabilidad, lo que permite crear pods de réplica y apagarlos automáticamente en función de los cambios en la demanda.
¿Cómo funciona un pod?
Los recursos de cargas de trabajo denominados «controladoras» crean los pods y gestionan la implementación, la replicación y el estado de los pods en el clúster. Por ejemplo, si un nodo del clúster falla, una controladora detecta que los pods de ese nodo no responden y crea pods de sustitución en otros nodos.
Los tres tipos más comunes de controladoras son los siguientes:
- Jobs: para trabajos por lotes que son efímeros y que ejecutarán una tarea hasta su finalización
- Deployments: para aplicaciones sin estado y persistentes, como servidores web (servidores HTTP)
- StatefulSets: para aplicaciones con estado y persistentes, como las bases de datos
Si un pod tiene varios contenedores, todos se programan juntos en el mismo servidor del clúster, ya sea una máquina virtual o un servidor físico. Todos los contenedores del pod comparten recursos y dependencias, y pueden coordinar su ejecución y finalización. Por ejemplo, los pods pueden contener contenedores «init» que se ejecutan antes de que se ejecuten los contenedores de aplicaciones, lo que configura el entorno para las aplicaciones posteriores.
Los pods casi siempre los crean las controladoras que pueden gestionar automáticamente el ciclo de vida de los pods, lo que incluye reemplazar los pods que fallan, replicar los pods cuando sea necesario y desalojar el pod de los nodos del clúster cuando su ejecución llegue a su fin o ya no se necesiten.
Las controladoras utilizan la información de una plantilla de pods para crear los pods y se aseguran de que los pods en ejecución coincidan con la implementación definida en la plantilla de pods, por ejemplo, creando réplicas que coinciden con el número definido en la implementación.
¿Cómo se comunican los pods entre sí?
Cuando se crea un pod, se le asigna su propia dirección IP única. Si hay varios contenedores dentro del pod, pueden comunicarse entre sí simplemente utilizando localhost. Las comunicaciones externas al módulo se logran gracias a los puertos. Las comunicaciones entre los pods de un clúster aprovechan el hecho de que Kubernetes asigna una dirección IP privada de clúster a cada pod de un clúster, lo que elimina la necesidad de crear enlaces explícitos entre los pods o de asignar puertos de contenedores a puertos de host. De esta forma, todos los pods de un clúster pueden «verse» entre sí sin necesidad de recurrir a procesos NAT.
¿Cuáles son los comandos básicos de kubectl?
kubectl proporciona una serie de comandos que permiten al usuario crear pods, ejecutarlos mediante implementaciones, comprobar el estado de los pods en ejecución y detener los pods que ya no se necesitan. Los comandos JavaScript Object Notation (JSON) o YAML Ain’t Markup Language (YAML) son válidos para codificar comandos.
Los comandos de kubectl más utilizados se enumeran a continuación:
Get
El comando «kubectl get» mostrará información tabular sobre uno o más recursos. La información se puede filtrar mediante selectores de etiquetas. La información que se muestra puede ser de solo el espacio de nombres existente o de todos los espacios de nombres del clúster.
El comando «kubectl api-resources» generará una lista de todos los recursos compatibles sobre los que puede obtener información. El formato general del comando «kubectl get» es:
$ kubectl get [(-o|--output=)json|yaml|wide|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...] (TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME ...) [flags]
Create Pods
Los pods se crean utilizando el comando «create» con el siguiente formato:
$ kubectl create -f FILENAME, donde «FILENAME» es el nombre del archivo.
Por ejemplo, el comando:
kubectl create -f ./mypod.yaml creará un pod nuevo a partir del archivo YAML «mypod».
Delete Pods
El comando «kubectl delete -f ./mypod.yaml» eliminará el pod «mypod» del clúster. Eliminar pods es un proceso sencillo; los pods seguirán ejecutándose durante un periodo de gracia (30 segundos de forma predeterminada) antes de dejar de funcionar por la fuerza. El valor del periodo de gracia se puede sobrescribir con el marcador –grace-period si se desea.
Productos y soluciones relacionados
Entorno de ejecución de Kubernetes preparado para la empresa
Optimice las operaciones en la infraestructura multi-cloud.
Kubernetes frente a Docker
Elija las herramientas adecuadas para prosperar con los contenedores.
Contenedores de Docker en Kubernetes
Una vez haya entendido qué son los contenedores y Kubernetes, el siguiente paso es conocer cómo funcionan juntas estas dos tecnologías.