Kubernetes

Tutorial de Kubernetes ReplicaSet

Tutorial de Kubernetes ReplicaSet
Kubernetes a menudo se ve como este enorme cuerpo de conceptos interrelacionados como nodos y pods, servicios, implementaciones, etc., que a menudo son difíciles de desenredar. En esta publicación, vamos a desentrañar lentamente una abstracción clave que es ReplicaSet. Empezaremos creando un pequeño .yaml para un pod de Kubernetes, que tendría una etiqueta, y luego crearía un ReplicaSet que aseguraría que una cierta cantidad de pods con la misma etiqueta siempre se estén ejecutando en el clúster . Esto es lo que los autores de proyectos realmente pretendían cuando estaban diseñando Kubernetes. Así que comencemos.

Prerrequisitos

Lo primero que necesitará será acceso a un clúster de Kubernetes. Puede crear uno usando Minikube o usar Docker para Windows o Docker para Mac, los cuales ahora vienen con una distribución de Kubernetes de un solo nodo que puede habilitar en la configuración de Docker.

También necesitaría tener algunos conocimientos a priori sobre Kubernetes. Este es un buen punto de partida.

Creando Pods

Por lo general, creamos pods usando un archivo yaml que especifica qué imagen de contenedor usar, qué puertos exponer, etc. Aquí hay un archivo simple para crear un pod nginx.

apiVersion: v1
tipo: Pod
metadatos:
nombre: nginx-1
etiqueta:
aplicación: servidor web
Especificaciones:
contenedores:
- nombre: nginx
imagen: nginx: 1.7.9
puertos:
- contenedorPuerto: 80

Guárdalo con el nombre nginx-pod.yaml en un directorio, y luego desde dentro del mismo directorio ejecute el comando:

$ kubectl crear -f ./ nginx-pod.yaml
## Verifique que el pod se haya creado ejecutando:
$ kubectl obtener vainas

Notarás que un solo grupo llamado "Nginx-1" está en funcionamiento. Pero no puedes escalar esta única vaina. Corriendo kubectl crear nuevamente te dará un error ya que el nombre nginx-1 no se puede reutilizar de nuevo.

Kubernetes ha dado la capacidad de crear pods para abstracciones superiores como Despliegues y ReplicaSets. Que crean pods a partir de una plantilla de pod determinada especificando qué imágenes usar, qué puertos exponer en cada uno de los nuevos pods, etc., pero nada demasiado específico sobre un solo pod. ReplicaSet (y también las implementaciones) luego crea nuevos pods, dando a cada nuevo pod un nombre único, así como una etiqueta no única que ayuda al ReplicaSet a realizar un seguimiento de los pods que se crearon a partir de una plantilla determinada.

ReplicaSet asegura que en cualquier instante un cierto número de pods de una etiqueta determinada estén siempre en funcionamiento. Si, por ejemplo, un nodo se cae, el trabajo de ReplicaSet es crear más pods en otros nodos para compensar la pérdida. Para escribir un archivo yaml de conjunto de réplicas, seguiríamos el patrón similar a escribir un pod. Tendrá una versión api (aplicaciones / v1), un tipo (ReplicaSet) y un nombre en los metadatos. El conjunto de réplicas en sí puede tener etiquetas, pero mantendremos las cosas simples por ahora y solo le daremos un nombre único mi-conjunto de réplicas.

Entonces necesitamos movernos de metadatos sección a la carne de la materia Especificaciones. Aquí proporcionamos el número de réplicas que queremos en la sección réplicas. Luego le damos a este ReplicaSet un selector que se usaría para coincidir con una etiqueta, por ejemplo, aplicación a un valor, digamos, Servidor web, entre las vainas que se están ejecutando actualmente. Si hay menos de estos pods, creará pods de acuerdo con la plantilla dada y agregará la misma etiqueta a estos nuevos pods. Si hay más pods de los necesarios, se eliminan algunos.

Especificar una plantilla que actuaría como base para la creación de nuevos pods es el paso más complicado. Esta plantilla no tendrá nombre, ya que el conjunto de réplicas creará un nombre nuevo para cada pod creado. Sin embargo, tendrá etiquetas y puede notar que la misma etiqueta app = servidor web que tiene la plantilla se selecciona a través del selector parámetro en la especificación del conjunto de réplicas.

apiVersion: aplicaciones / v1
tipo: ReplicaSet
metadatos:
nombre: my-replicaset
 
Especificaciones:
réplicas: 3
selector:
matchLabels:
aplicación: servidor web
plantilla:
metadatos:
etiquetas:
aplicación: servidor web
Especificaciones:
contenedores:
- nombre: nginx
imagen: nginx: 1.7.9
puertos:
- contenedorPuerto: 80

Guarde este archivo como nginx-replicaset.yaml y cree el conjunto de réplicas con el comando:

$ kubectl crear -f nginx-replicaset.yaml

Porque creamos previamente un pod con la misma etiqueta app = servidor web, el conjunto de réplicas solo crearía dos pods más. Puede enumerar todos los pods con el comando:

$ kubectl obtener vainas
NOMBRE ESTADO LISTO REINICIA EDAD
my-replicaset-nmvt9 1/1 En ejecución 0 9 s
my-replicaset-xf9mx 1/1 En ejecución 0 9s
nginx-1 1/1 En ejecución 0 28 s

Cada uno de los pods tendrá un nombre único asociado. Como el primer grupo que creamos tenía un nombre nginx-1. Puede intentar eliminar este usando el comando:

$ kubectl eliminar pod nginx-1
$ kubectl obtener vainas
 
NOMBRE ESTADO LISTO REINICIE EDAD
my-replicaset-nmvt9 1/1 En ejecución 0 1m
my-replicaset-pkn4q 1/1 En ejecución 0 22 s
my-replicaset-xf9mx 1/1 En ejecución 0 1m

Notará que casi instantáneamente el controlador ReplicaSet creó un nuevo pod para reemplazar el que eliminamos. Asegurándose así de que el número de pods en ejecución, con etiqueta app = servidor web es siempre 3, como se especifica en nuestro manifiesto de conjunto de réplicas, arriba.

Obtienes mucho control gracias a etiquetas y selectores. Puede distribuir aún más los pods en varios nodos utilizando nodeSelectors, que se utilizan para asignar un cierto número de pods en ciertos nodos.

Lo que los conjuntos de réplicas no permiten son actualizaciones. Si es una versión más nueva de su aplicación, digamos, nginx: 1.8 aparece, tendrá que eliminar este conjunto de réplicas y crear uno nuevo con la imagen mencionada en el manifiesto yaml del conjunto de réplicas. Aquí es donde el concepto de implementaciones resulta útil. Incluye la idea de conjuntos de réplicas y se amplía proporcionando soporte adicional para actualizar sus aplicaciones. Ahora que se siente cómodo con los conjuntos de réplicas, puede ser una buena idea analizar las implementaciones de Kubernetes.

Referencias

  1. Creando Pods
  2. Crear ReplicaSets
Las mejores distribuciones de Linux para juegos en 2021
El sistema operativo Linux ha recorrido un largo camino desde su apariencia original, simple y basada en servidor. Este sistema operativo ha mejorado ...
Cómo capturar y transmitir su sesión de juego en Linux
En el pasado, los juegos solo se consideraban un pasatiempo, pero con el tiempo la industria del juego experimentó un gran crecimiento en términos de ...
Los mejores juegos para jugar con el seguimiento de manos
Oculus Quest presentó recientemente la gran idea del seguimiento manual sin controladores. Con un número cada vez mayor de juegos y actividades que ej...