Diez minutos para comprender los conceptos centrales de Kubernetes
A continuación se presentarán brevemente los conceptos centrales de Kubernetes. Debido a que estas definiciones se pueden encontrar en la documentación oficial de Kubernetes, dirección del documento chino, evitaremos el uso de introducciones de texto largas y aburridas a continuación. En lugar de eso, explicaremos los conceptos usando diagramas y ejemplos que pueden ayudarnos a comprender completamente algunos de los conceptos más oscuros.
Kubernetes (k8s) es una plataforma de código abierto para automatizar operaciones de contenedores, incluida la implementación, programación y escalado entre clústeres de nodos. Si alguna vez ha utilizado la tecnología de contenedores de Docker para implementar contenedores, puede considerar a Docker como un componente de bajo nivel utilizado internamente por Kubernetes. Kubernetes no solo admite Docker, sino también Rocker (otra tecnología de contenedores).
El uso de Kubernetes tiene las siguientes características:
De hecho, Kubernetes requiere solo un archivo de implementación y puede implementar un grupo completo de contenedores multicapa (frontal y posterior) con un solo clic. .
Un clúster es un conjunto de segmentos. Estos nodos pueden ser servidores físicos o máquinas virtuales, con la plataforma Kubernetes instalada en ellos. La siguiente figura muestra dicho grupo. Tenga en cuenta que la descripción general está simplificada para enfatizar los conceptos centrales.
En la imagen de arriba, puede ver los siguientes componentes, utilizando íconos especiales para representar el Servicio y la Etiqueta:
El pod (cuadro verde en la imagen de arriba) está organizado en el nodo. incluyendo un conjunto de contenedores y volúmenes. Los contenedores en el mismo Pod comparten un espacio de red con nombre y pueden usar localhost para comunicarse entre sí. Los pods son entidades efímeras y no persistentes. Es posible que tengas las siguientes preguntas:
Como se muestra en la imagen de arriba, algunos Pods tienen etiquetas. Una etiqueta es un par clave-valor adjunto a un Pod y se utiliza para pasar atributos definidos por el usuario. Por ejemplo, puede crear una etiqueta de "nivel" y "aplicación", etiquetar el contenedor Pod de front-end con Label(tier=frontend, app=myapp), etiquetar el contenedor back-end con Label(tier=backend, app= myapp), y luego use Selectores, seleccione un Pod con una etiqueta específica y aplíquele un Servicio o Controlador de replicación.
¿Quieres crear Pods manualmente? Si quieres crear varias copias del mismo contenedor, ¿necesitas crearlas una por una? ¿Se pueden dividir los Pods en grupos lógicos?
El controlador de replicación garantiza que se esté ejecutando un número específico de copias de Pod en cualquier momento. Si crea un controlador de replicación para un pod y especifica 3 réplicas, creará 3 réplicas y las monitoreará continuamente. Si un Pod no responde, el Controlador de replicación lo reemplazará.
Si el Pod que antes no respondía se restaura y ahora hay 4 Pods, el Controlador de replicación finalizará uno de ellos y mantendrá el total en 3. Si el número total de réplicas cambia a 5 durante la operación, el controlador de replicación iniciará inmediatamente 2 nuevos Pods para garantizar que el número total sea 5. También puede reducir los Pods de esta manera, lo cual resulta útil al realizar actualizaciones continuas.
Al crear un controlador de replicación, se deben hacer dos cosas:
Ahora que se han creado las réplicas de Pod, ¿cómo equilibrar la carga en estas réplicas? Lo que necesitamos es Servicio.
Si los Pods son efímeros. Entonces, la dirección IP puede cambiar al reiniciar. ¿Cómo podemos apuntar el contenedor de front-end al contenedor de back-end de manera correcta y confiable?
El servicio es una capa de abstracción que define una serie de Pods y políticas para acceder a estos Pods. El servicio encuentra el grupo Pod a través de la Etiqueta. Como los Servicios son abstractos, normalmente no son visibles en los diagramas, lo que hace que el concepto sea más difícil de entender.
Ahora, supongamos que hay dos Pods de backend y defina el nombre del Servicio de backend como 'servicio de backend' y el selector de etiquetas como (tier=backend, app=myapp). backend-service completará las siguientes dos cosas importantes:
La siguiente animación muestra la función del Servicio. Tenga en cuenta que este diagrama se ha simplificado enormemente. Sin entrar en la configuración de la red, la red subyacente y el enrutamiento involucrados en lograr objetivos de equilibrio de carga transparente son relativamente avanzados.
Existe un tipo especial de servicio Kubernetes llamado 'LoadBlancer', que se utiliza como equilibrador de carga externo para equilibrar temporalmente la carga entre una determinada cantidad de Pods.
Los nodos (cuadros naranjas arriba) son máquinas físicas o máquinas virtuales que sirven como trabajadores de Kubernetes, a menudo llamados Minions. Cada nodo ejecuta los siguientes componentes clave de Kubernetes:
El clúster tiene un Kubernetes Master (cuadro morado). Kubernetes Master proporciona una vista única del clúster y tiene una serie de componentes, como el servicio API de Kubernetes. El servidor API proporciona puntos finales REST que se pueden utilizar para interactuar con el clúster. El nodo maestro incluye el controlador de replicación que se utiliza para crear y replicar pods.
Le llevará diez minutos comprender los conceptos centrales de Kubernetes.
A continuación, continuará entendiendo los conceptos de y, y finalmente intentará utilizarlos.