Saltar al contenido principal

Pods

Los pods son una unidad de ejecución de uno o varios contenedores que comparten la misma red y almacenamiento. También es el objeto más básico que puedes ejecutar en kubernetes y que nos permite ejecutar un contenedor. Vamos a ver cómo crear, gestionar y eliminar pods en kubernetes.

Dentro vídeo: https://youtu.be/D1YjrFoqg4Q

Pods

Características de los pods

  1. Uno o varios contenedores:

    En la mayoría de los casos, un Pod contiene un solo contenedor (como un servicio web).

    También puede contener varios contenedores que necesitan comunicarse estrechamente (por ejemplo, un contenedor de una app y un contenedor que le ayuda a recopilar logs).

  2. Compartición de recursos:

    Todos los contenedores dentro de un Pod comparten la misma dirección IP y pueden comunicarse entre sí mediante localhost.

    Pueden compartir volúmenes de almacenamiento persistente.

  3. Ciclo de vida y gestión:

    Kubernetes no gestiona Pods individuales de forma directa en producción, sino que usa objetos como Deployments, ReplicaSets o DaemonSets para gestionarlos automáticamente que vereos en los siguientes capítulos.

Crear un pod con kubectl

Ya hemos visto brevemente como crear pods con manifiestos. Algunos objetos de kubernetes se puede crear desde el propio CLI de kubectl. Por ejemplo, creamos un nuevo pod especificando el nombre que le queremos asignar a ese pod y la imagen que utilizaremos.

kubectl run <nom_pod> --image=<imagen>

Por ejemplo, para crear un pod con la imagen de nginx:

kubectl run nginx --image=nginx

Crear un pod con un manifiesto

Para crear un pod con un manifiesto, creamos un archivo con extensión .yaml y lo aplicamos con kubectl apply -f <archivo>.

apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx

Esta sería la forma más básica de crear un pod. En este caso, creamos un pod con un contenedor de nginx.

Modificar un pod

Podemos modificar un pod con el comando kubectl edit pod <nom_pod>. Esto nos abrirá el manifiesto del pod en un editor de texto. Podemos modificarlo y guardarlo para que se apliquen los cambios.

kubectl edit pod nginx

También podríamos modificar el manifiesto directamente y aplicarlo con kubectl apply -f <archivo>. Kubernetes reconocerá que ya existe un pod con ese nombre y lo modificará para cumplir con los nuevos atributos.

apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:alpine

En este caso, hemos cambiado la imagen de nginx por la versión alpine. Kubernetes se encargará de parar el pod actual y crear uno nuevo con la nueva imagen.

Ver un pod

Tenemos varias formas de ver un pod. Podemos listar todos los pods, listar un pod en concreto, ver la descripción de un pod, ver el manifiesto de un pod, etc. Por ejemplo:

kubectl get pods # Listar todos los pods en el cluster
kubectl get pods -o wide # Listar los pods en una tabla más amplia
kubectl get pods <nom_pod> # Listar el pod especificado
kubectl describe pods <nom_pod> # Describe el pod nginx
kubectl get pods <nom_pod> -o yaml # Nos devuelve todo el manifiesto del pod

Ver logs de un pod

kubectl logs <nom_pod>

Ejecutar un comando en un pod

kubectl exec <nom_pod> -- ls

Eliminar un pod

kubectl delete pod nginx

Problemas de los pods

No saben restaurarse ni replicarse a si mismos. Necesitan de alguien que gestione estos procesos. Para esto se utilizan otro tipo de elementos: Replicasets


Volver al índice

X

Graph View