Kubernetes

Escalador automático de pod horizontal de Kubernetes

Escalador automático de pod horizontal de Kubernetes
Los pods se pueden crear como objetos independientes o como parte de un conjunto de réplicas escalables o una implementación. Cada uno de los dos últimos objetos se utiliza para implementar no solo un módulo, sino una multitud de ellos. El objetivo aquí es que las cápsulas puedan ser fungibles si una tiene demasiado tráfico, dos más pueden aparecer y asumir la carga adicional. Sin embargo, una cosa importante a tener en cuenta aquí es que tanto el conjunto de réplicas como los objetos de implementación tienen un número codificado de réplicas de pod que pretenden ejecutar.

Si el recuento de réplicas se establece en 100 y la demanda es demasiado pequeña, incluso entonces los 100 pods estarán en funcionamiento. Esto da como resultado un desperdicio de recursos de CPU y memoria. Sí, ofrece confiabilidad, en el sentido de que si un nodo se bloquea y las cápsulas dentro de él mueren, el controlador del conjunto de réplicas intentará devolver la cantidad de cápsulas a 100 generando cápsulas en otros nodos. La aplicación permanece en línea.

En un sentido más abstracto, el conjunto de réplicas intentaría lograr un estado deseado del clúster y miraría el estado actual y descubra cómo puede lograr el estado deseado.

Sin embargo, nos gustaría algo un poco más sensible a la demanda del mundo real. Ingresar Escalador automático de pod horizontal. Es el trabajo de Horizontal Pod Autoscaler escalar la aplicación cuando sea necesario y luego escalarla nuevamente una vez que la carga de trabajo disminuya.

Por qué utilizar un escalador automático de pod horizontal?

Como sugiere el nombre, este componente escalaría su aplicación automáticamente. En la nube, esto realmente puede ayudarlo a reducir los recursos informáticos y de memoria que se le facturarán. Dado que el escalador automático es sensible a la utilización de recursos, cuando ve que muchos pods están inactivos, reduce la aplicación y cuando la demanda de esos pods aumenta, escala la aplicación creando nuevos pods y la carga se distribuye a esos.

Puede ahorrarle tanto tiempo valioso como recursos informáticos. No tendrá que preocuparse por cuál debería ser el recuento de réplicas para sus pods al escribir una implementación, el escalador automático lo administraría por usted.

Configuración inicial

El primer y más importante requisito sería tener un clúster de Kubernetes en ejecución. Utilice Katacoda Playground, que es perfecto para experimentar y aprender sobre Kubernetes. Lo siguiente que necesitaría es un servidor de métricas.

Este complemento para su sistema Kubernetes (espacio de nombres del sistema kube) recopilaría métricas como el uso de CPU y memoria desde dos perspectivas diferentes:

  1. Recurso utilizado por cada pod
  2. Recurso consumido en cada nodo

Las métricas, tanto desde la perspectiva, son cruciales para ayudar a Autoscaler a decidir cuál debería ser su próximo movimiento. Para agregar un servidor de métricas a su clúster de Kubernetes, siga esta guía. Ahora estamos listos para ver el escalador automático de pod horizontal en acción.

Usando el escalador automático

Para ver el funcionamiento del escalador automático, necesitamos una aplicación de prueba. Creemos un servidor php-apache simple y lo expongamos como un servicio.

$ kubectl ejecutar php-apache --image = k8s.gcr.io / hpa-example --requests = cpu = 200m --expose
--puerto = 80

La imagen utilizada aquí es una de las imágenes de muestra proporcionadas por el proyecto Kubernetes. Realiza algunas tareas intensivas de la CPU y hace que el proceso sea mucho más evidente al hacerlo.

Para escalar automáticamente esta implementación, debemos informar al escalador automático cuál es la cantidad mínima y máxima de pods que permitiremos y el porcentaje de CPU que pueden usar. Hay muchos más factores que puede considerar, como la memoria, el almacenamiento y la red.

$ kubectl implementaciones de escala automática / php-apache --cpu-percent = 50 --min = 1 --max = 10

En el estado actual, dado que nadie está consumiendo este servicio, lo más probable es que se mantenga en el valor mínimo. Puede verificar el estado de todas las implementaciones con escala automática en el espacio de nombres predeterminado ejecutando:

$ kubectl obtener hpa
NOMBRE REFERENCIA OBJETIVOS MINPODS MAXPODS REPLICAS EDAD
Implementación de php-apache / php-apache 0% / 50% 1 10 1 2m

Generación de carga y prueba de la función de escala automática

Puede ver que la cantidad de réplicas sigue siendo solo una y la carga de la CPU es insignificantemente baja. Podemos crear una carga adicional y ver cómo responde el escalador automático. El servicio que expone nuestros pods php-apache no está expuesto al mundo exterior, por lo que crearemos un pod temporal y abriremos una sesión de shell interactiva en ese pod.

Esto nos permitirá comunicarnos con todos los servicios disponibles en el clúster, incluido el servicio php-apache.

$ kubectl ejecutar -i --tty busybox --image = busybox --restart = Nunca - sh
/ #

Notarás que el mensaje cambiará indicando que estamos dentro de este contenedor. Intentemos ahora poner algo de carga en nuestro servicio haciendo solicitudes repetidamente. En el nuevo indicador, ejecutemos el siguiente ciclo while:

/ # mientras es verdadero; hacer wget -q -O- http: // php-apache.defecto.svc.grupo.local; hecho

Abra una nueva terminal, ya que no podemos dejar que este ciclo termine todavía. Al inspeccionar el escalador automático, verá la utilización de la CPU y al enumerar los pods verá que ahora hay varias instancias del servidor php-apache,

$ kubectl obtener hpa
NOMBRE REFERENCIA OBJETIVOS MINPODS MAXPODS REPLICAS EDAD
Implementación de php-apache / php-apache 121% / 50% 1 10 4 1h
 
$ kubectl obtener vainas
NOMBRE ESTADO LISTO REINICIE EDAD
busybox 1/1 Corriendo 0 6m
php-apache-8699449574-7qwxd 1/1 Ejecutando 0 28s
php-apache-8699449574-c9v54 1/1 En ejecución 0 10 h
php-apache-8699449574-h9s5f 1/1 Ejecutando 0 28s
php-apache-8699449574-sg4hz 1/1 Ejecutando 0 28s

Termine el ciclo while y el número de cápsulas se reducirá a uno en unos pocos minutos.

Conclusión

Así que esa es una demostración simple del escalador automático de pod horizontal. Recuerde tener un servidor de métricas funcional para su clúster y, mientras crea una implementación, mantenga el recuento de réplicas en 1. El escalador automático de pod horizontal se encargará del resto.

Juegos HD remasterizados para Linux que nunca tuvieron un lanzamiento de Linux antes
Muchos desarrolladores y editores de juegos están creando una remasterización HD de juegos antiguos para extender la vida útil de la franquicia, por f...
Cómo usar AutoKey para automatizar juegos de Linux
AutoKey es una utilidad de automatización de escritorio para Linux y X11, programada en Python 3, GTK y Qt. Usando su funcionalidad de scripting y MAC...
Cómo mostrar el contador de FPS en juegos de Linux
Los juegos de Linux obtuvieron un gran impulso cuando Valve anunció el soporte de Linux para el cliente Steam y sus juegos en 2012. Desde entonces, mu...