Red de conocimiento informático - Aprendizaje de programación - kubernetes

kubernetes

1. ¿Qué es Kubernetes?

Kubernetes (k8s) es el sistema de gestión de clústeres de contenedores de código abierto de Google (interno de Google: Borg). Basado en la tecnología Docker, proporciona una serie de funciones completas como implementación y operación, programación de recursos, descubrimiento de servicios y escalado dinámico para aplicaciones en contenedores, lo que mejora la conveniencia de la gestión de clústeres de contenedores a gran escala.

2. Descripción de los componentes principales de Kubernetes

Hay dos tipos principales de nodos en un clúster de Kubernetes, a saber, nodos maestros y nodos subordinados.

El nodo Minion es el nodo que realmente ejecuta el contenedor Docker. Es responsable de interactuar con el Docker que se ejecuta en el nodo y proporcionar la función de proxy.

El nodo maestro es responsable de proporcionar una serie de interfaces API para administrar el clúster y realiza la operación y administración del clúster interactuando con el nodo Minion.

apiserver: la entrada para que los usuarios interactúen con el clúster de Kubernetes. Encapsula las operaciones de adición, eliminación, modificación y consulta de objetos principales, proporciona una interfaz API de estilo RESTFul y utiliza etcd para lograr persistencia y mantenimiento. consistencia del objeto.

Programador: responsable de la programación y administración de los recursos del clúster. Por ejemplo, cuando un pod sale de manera anormal y necesita reasignar una máquina, el programador utiliza un determinado algoritmo de programación para encontrar el nodo más adecuado.

controlador-manager: se utiliza principalmente para garantizar que la cantidad de replicaciones definidas por replicationController sea consistente con la cantidad de pods en ejecución reales. También garantiza que la relación de mapeo del servicio al pod esté siempre actualizada.

kubelet: se ejecuta en el nodo minion y es responsable de interactuar con Docker en el nodo, como iniciar y detener el contenedor, monitorear el estado de ejecución, etc.

proxy: se ejecuta en el nodo minion y es responsable de proporcionar funciones de proxy para pods. Obtiene periódicamente información de servicio de etcd e implementa el reenvío de tráfico modificando iptables en función de la información del servicio (la versión inicial proporciona reenvío directamente). a través del programa) función, baja eficiencia), reenvía el tráfico al nodo donde se encuentra el pod al que se accederá.

etcd: base de datos de almacenamiento de valores-clave, utilizada para almacenar información de Kubernetes.

franela: Franela es una herramienta de Overlay Network diseñada por el equipo de CoreOS para Kubernetes y debe descargarse e implementarse por separado.

Sabemos que cuando iniciamos Docker, habrá una dirección IP utilizada para interactuar con el contenedor. Si no lo administramos, esta dirección IP puede ser la misma en cada máquina y está limitada a la. Máquina local para comunicarse en la máquina, no se puede acceder a los contenedores Docker en otras máquinas.

El propósito de franela es volver a planificar las reglas de uso de las direcciones IP para todos los nodos del clúster, de modo que los contenedores en diferentes nodos puedan obtener direcciones IP no duplicadas que pertenecen a la misma intranet, y Permitir que los contenedores que pertenecen a diferentes nodos. Los contenedores en el servidor puedan comunicarse directamente a través de la IP de la intranet.

3. El concepto central de Kubernetes

Pod

Una combinación de varios contenedores relacionados que se ejecutan en nodos Node.

Los contenedores contenidos en el Pod se ejecutan en el mismo host, utilizan el mismo espacio de nombres de red, dirección IP y puerto, y pueden comunicarse a través de localhost.

Pod es la unidad más pequeña para la creación, programación y gestión de Kurbernetes. Proporciona un mayor nivel de abstracción que los contenedores, lo que hace que la implementación y la gestión sean más flexibles. Un Pod puede contener uno o varios contenedores relacionados.

 

Controlador de replicación

El controlador de replicación se utiliza para administrar copias de Pod y garantizar que haya un número específico de copias de Pod en el clúster.

Si el número de réplicas en el clúster es mayor que el número especificado, se detendrán los contenedores que superen el número especificado. De lo contrario, se iniciarán los contenedores inferiores al número especificado para garantizar que el número permanezca sin cambios. .

El controlador de replicación es el núcleo para realizar escalamiento elástico, expansión dinámica y actualización continua.

Servicio

El servicio define una colección lógica de Pods y una estrategia para acceder a la colección, y es una abstracción de un servicio real.

El servicio proporciona una entrada de acceso al servicio unificada, así como mecanismos de descubrimiento y proxy del servicio. Los usuarios no necesitan saber cómo se ejecuta el Pod en segundo plano.

Etiqueta

Cualquier objeto API en Kubernetes se identifica mediante Etiqueta. La esencia de Etiqueta es una serie de pares clave-valor K/V. La etiqueta es la base para el funcionamiento del controlador de replicación y el servicio. Ambos están asociados con el pod que se ejecuta en el nodo a través de la etiqueta.

Nodo

Nodo es el nodo de servicio (o agente) que ejecuta Pod en la arquitectura del clúster de Kubernetes.

El nodo es la unidad de operación del clúster de Kubernetes. Se utiliza para alojar la operación del Pod asignado y es el host donde se ejecuta el Pod.

4. Configuración de condiciones previas

Tres máquinas virtuales del sistema Centos7 (1 maestro + 2 nodos), firewalls en las tres máquinas, SELINUX está todo apagado . Mi entorno experimental puede acceder a Internet y se puede utilizar la fuente YUM predeterminada.

5. Planificación de la implementación

192.168.10.1 # nodo maestro (etcd, kubernetes-master)

192.168.10.2 # nodo1 Nodo (etcd,kubernetes-node,docker,flannel)

192.168.10.3 # nodo2 nodo (etcd,kubernetes-node,docker,flannel)

6. Inicie la instalación

paso 1: instalar en el maestro

yum install kubernetes-master etcd flannel -y

paso 2: instalar en el nodo

yum install kubernetes-node etcd flannel -y

paso 3: configuración del clúster etcd

Edite el archivo de configuración etcd en el nodo maestro

Editar el archivo de configuración etcd en el nodo nodo1

Editar el archivo de configuración etcd en el nodo nodo2

En este punto, el clúster etcd se implementó y luego se inició en cada nodo

systemctl start etcd

paso 4: Verificación

paso 6: Iniciar tres servicios en Master

paso 7: instalación del nodo kubernetes

Repetir la operación anterior para el nodo nodo2

paso 8: iniciar el servicio del nodo de Kubernetes por separado

7. Configuración de red

Porque la parte de red del clúster de Kubernetes está instalada en en forma de complemento, elegimos franela aquí

Se han instalado los pasos de instalación anteriores

Cree una red asignada para franela

8. Ejecute el comando kubectl para verificar

Ejecute lo siguiente en el maestro para verificar el estado de kubernetes

9. Los comandos de solución de problemas más utilizados son los siguientes