Vagones estáticos en Kuberentes

Los Pods estáticos son gestionados directamente por el kubelet y el servidor de la API no tiene ningún control sobre estos pods. El kubelet es responsable de vigilar cada Pod estático y reiniciarlo si se bloquea.Los Pods estáticos que se ejecutan en un nodo son visibles en el servidor de la API, pero no pueden ser controlados por el servidor de la API. El Pod estático no tiene ningún controlador de replicación asociado, el propio servicio kubelet lo vigila y lo reinicia cuando se bloquea. No hay control de salud para los pods estáticos. El proceso kubelet vigila el directorio específico designado para los pods estáticos.

Para saber más sobre los Static Pods, visita la página oficial de Kubernetes aquí.

En este artículo, veremos los pasos para crear un Pod Estático a partir del archivo guardado en la ubicación por defecto de la que kubelet lee los manifiestos y también cambiaremos la ubicación por defecto a algún otro directorio y veremos cómo se crea un pod estático desde allí. Crearemos pods estáticos en el nodo Trabajador.

Requisitos previos

  1. Cluster Kubernetes con al menos 1 nodo trabajador.
    Si quieres aprender a crear un Cluster de Kubernetes, haz clic aquí. Esta guía te ayudará a crear un cluster de Kubernetes con 1 Master y 2 Nodos en Instancias EC2 de AWS Ubuntu 18.04.

¿Qué vamos a hacer?

  1. Crear pods estáticos

Crear pods estáticos

Ejecuta los siguientes comandos desde el nodo maestro para obtener los detalles de los nodos y pods del cluster.

$master kubectl  get nodes
$master kubectl  get pods

get-all-pods

Puedes comprobar los contenedores que se ejecutan como parte de los pods

$worker docker ps
$worker docker ps -a

contenedores-en-nodo-trabajador

Ahora, inicia sesión en el nodo trabajador y crea un nuevo archivo con el siguiente contenido en la ruta por defecto de los manifiestos de los pods estáticos.

$worker vim /etc/kubernetes/manifests/static-web.yaml
apiVersion: v1
kind: Pod
metadata:
  name: static-web
  labels:
    role: myrole
spec:
  containers:
    - name: web
      image: nginx
      ports:
        - name: web
          containerPort: 80
          protocol: TCP

static-pod-definition-at-default-location

En cuanto creas una definición de pod en la ubicación por defecto del manifiesto de pods estáticos, se crea el pod que no está controlado por el servidor de la API.

Puedes comprobar el pod recién creado con el siguiente comando desde el nodo maestro.

$master kubectl  get pods
$master kubectl  get pods --all-namespaces

estático-creado

Para comprobar los contenedores creados como parte del pod, ejecuta el siguiente comando en el nodo trabajador

$worker docker ps
$worker docker ps -a

contenedores-en-nodo-trabajador

También podemos cambiar la ubicación por defecto de la que kubelet lee los manifiestos.

Ahora crea una nueva carpeta donde queramos almacenar los manifiestos de los Pods estáticos.

Aquí estamos creando «/etc/kubelet.d/».

$worker mkdir -p /etc/kubelet.d/

Crea un archivo de definición de pods en el directorio que hemos creado.

$worker vim /etc/kubelet.d/static-web.yaml
apiVersion: v1
kind: Pod
metadata:
  name: static-web-2
  labels:
    role: myrole
spec:
  containers:
    - name: web
      image: nginx
      ports:
        - name: web
          containerPort: 80
          protocol: TCP

Para cambiar la ruta por defecto desde la que Kubelets lee los manifiestos de los Static Pods, edita el archivo /var/lib/kubelet/config.yaml y cambia el valor de «staticPodPath» por «staticPodPath=/etc/kubelet.d».

cambiar la ruta de la cápsula estática

Una vez realizada la configuración, reinicia el servicio Kubelet

$worker systemctl restart kubelet

En cuanto se reinicie el servicio, Kubelet detecta la nueva ubicación y lee los manifiestos de esa ubicación y crea los pods.

Comprueba si el pod se ha creado o no.

$master kubectl  get pods

vaina estática

Comprueba el contenedor creado como parte del Pod en el nodo trabajador utilizando el siguiente comando.

$worker docker ps

contenedores-en-nodo-trabajador

Conclusión

En este artículo, hemos visto los pasos para crear pods estáticos y también hemos visto el cambio de configuración necesario en Kubelet para cambiar el directorio por defecto para los manifiestos de los pods estáticos.

También te podría gustar...