kubernetes-1-Instalación en línea de la versión independiente de kubernetes e introducción de componentes

1. Introducción

El rápido desarrollo de la computación en la nube

  • IaaS
  • PaaS
  • La
    tecnología SaaS Docker avanza a pasos agigantados
  • Construya una vez, corra en todas partes
  • Rápido y ligero peso del contenedor.
  • Entorno ecológico completo

Kubernetes también se denomina k8s. Es un sistema de código abierto que se utiliza principalmente para la implementación, expansión y contracción automática y la gestión de aplicaciones en contenedores. Divide los contenedores de muchas aplicaciones en varias unidades lógicas para facilitar la gestión y el descubrimiento.

En primer lugar, es una nueva solución líder para arquitectura distribuida basada en tecnología de contenedores. Kubernetes (k8s) es el sistema de gestión de clústeres de contenedores de código abierto de Google (interno de Google: Borg). Sobre la base de 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 administración de clústeres de contenedores a gran escala.

Kubernetes es una plataforma completa de soporte de sistemas distribuidos, con capacidades completas de administración de clústeres, mecanismos de acceso y protección de seguridad de múltiples niveles y expansión, capacidades de soporte de aplicaciones de múltiples inquilinos, mecanismos de descubrimiento y registro de servicios transparentes, y un equilibrador de carga inteligente integrado Potentes capacidades de descubrimiento de fallas y autorreparación, actualización continua de servicios y capacidades de expansión en línea, mecanismo de programación automática de recursos escalables y capacidades de administración de cuotas de recursos multigranular. Al mismo tiempo, Kubernetes proporciona herramientas de administración integrales, que cubren todos los aspectos, incluido el desarrollo, las pruebas de implementación, el monitoreo de operación y mantenimiento.

1.1 servicio

(1) En Kubernetes, el servicio es el núcleo y el servicio debe tener un nombre e ip: puerto únicos para brindar servicios al mundo exterior.

En Kubernetes, el servicio es el núcleo de la arquitectura del clúster distribuido. Un objeto de servicio tiene las siguientes características clave:

拥有一个唯一指定的名字
拥有一个虚拟IP(Cluster IP、Service IP、或VIP)和端口号
能够体现某种远程服务能力
被映射到了提供这种服务能力的一组容器应用上

El proceso de servicio de Servicio se basa actualmente en la comunicación de Socket para proporcionar servicios externos, como Redis, Memcache, MySQL, Servidor web o un proceso de Servidor TCP específico que implementa un negocio específico, aunque un Servicio generalmente consta de múltiples procesos de Servicio relacionados que brindan. servicios, y cada proceso de servicio tiene un punto de acceso de Endpoint (IP + Puerto) independiente, pero Kubernetes nos permite conectarnos al Servicio especificado a través del servicio.

Con el equilibrio de carga transparente integrado y el mecanismo de recuperación de fallas de Kubernetes, no importa cuántos procesos de servicio haya en el backend o si un proceso de servicio se volverá a implementar en otras máquinas debido a una falla, no afectará nuestro servicio normal. llamadas, y lo que es más importante, una vez que se crea el Servicio en sí, no cambiará, lo que significa que en un clúster de Kubernetes, no tenemos que preocuparnos por cambiar la dirección IP del servicio.

1.2 sub

(2) El servicio lo brinda el contenedor. Para asegurar la alta disponibilidad del servicio, no puede haber un solo contenedor que brinde el servicio. Se requiere un grupo . A este grupo de contenedores lo llamamos pod . Pod es la unidad operativa más básica de kubernetes.

El contenedor proporciona una poderosa función de aislamiento, por lo que es necesario colocar el grupo de procesos que brindan servicios para el servicio en el contenedor para el aislamiento. Con este fin, Kubernetes diseñó un objeto Pod, empaquetando cada proceso de servicio en un Pod correspondiente, convirtiéndolo en un contenedor que se ejecuta en el Pod. Para establecer la gestión de la asociación entre el servicio y el pod, Kubernetes coloca una etiqueta en cada pod. Por ejemplo, el pod que ejecuta MySQL está etiquetado con name = mysql, el pod que ejecuta PHP se etiqueta con name = php, y luego el servicio correspondiente Defina el selector de etiquetas Selector de etiquetas, de modo que el problema de asociación entre el servicio y el pod pueda resolverse de manera ingeniosa.

(3) Para realizar la gestión entre servicio y pod, existe el concepto de etiqueta , y los pods con la misma función se configuran con la misma etiqueta. Por ejemplo, puede etiquetar todos los pods que proporcionan el servicio mysql con name = mysql, de modo que el servicio mysql funcione en todos los pods que contengan la etiqueta name = mysql.

(4) El pod se ejecuta en el nodo . El nodo puede ser una máquina física o una máquina virtual. Por lo general, hay cientos de pods que se ejecutan en un nodo. Cada pod ejecuta un contenedor especial llamado Pause. Otros contenedores se denominan contenedores comerciales. Los contenedores comerciales comparten la pila de red del contenedor Pause y el volumen de montaje del volumen, por lo que en el mismo pod La comunicación y los datos el intercambio entre contenedores comerciales es más eficiente.

1.3 Gestión de clústeres

(5) En términos de gestión de clústeres, kubernetes divide las máquinas del clúster en un nodo maestro y un grupo de nodos de trabajo . Entre ellos, kube-apiserver, kube-controller-manager y kube-planificador se ejecutan en el maestro. Realizan administración de recursos, programación de pods, escalado elástico, control de seguridad, monitoreo del sistema, corrección de errores y otras funciones.

Node es un nodo de trabajo, que ejecuta aplicaciones y proporciona servicios. La unidad más pequeña en Node es el pod. Los procesos de servicio kubelet y kube-proxy de kubernetesd se ejecutan en Node. Son responsables de la creación, inicio, supervisión, reinicio y destrucción de pods, y se ha logrado el equilibrio de carga.

En términos de administración de clústeres, Kubernetes divide las máquinas en el clúster en un nodo maestro y un grupo de nodos de trabajo. Entre ellos, se están ejecutando un grupo de procesos relacionados con la administración de clústeres, kube-apiserver, kube-controller-manager y kube-Scheduler en el nodo principal. Estos procesos realizan las capacidades de administración de todo el clúster, como la administración de recursos, la programación de pods, el escalado elástico, el control de seguridad, la supervisión del sistema y la corrección de errores, y todos están completamente automatizados.

Node, como nodo de trabajo en el clúster, ejecuta aplicaciones reales. La unidad operativa más pequeña administrada por Kubernetes en Node es Pod. Los procesos de servicio kubelet y kube-proxy de Kubernetes se ejecutan en Node. Estos procesos de servicio son responsables de la creación, inicio, monitoreo, reinicio y destrucción de Pod, así como del balanceador de carga que implementa el modo de software.

1.4 Ampliación y actualización del servicio

(6) La expansión y actualización necesitan algo clave, el controlador de replicación (RC), RC debe contener 3 información clave:

(1)目标pod的定义。
(2)目标pod需要运行的副本数量(replicas)。
(3)要监控的目标pod的标签(Label)。

En el clúster de Kubernetes, resuelve los dos problemas principales de expansión y actualización del servicio en los sistemas de TI tradicionales. Solo necesita crear un Controlador de replicación (RC) para el Pod asociado con el Servicio que necesita expandirse, y se resolverá la expansión del Servicio y las actualizaciones posteriores.

Proceso de trabajo: Es necesario definir tres indicadores en RC. Kubernetes filtrará los pods correspondientes de acuerdo con la Etiqueta definida por RC, y monitoreará su estado y número en tiempo real. Cuando el número de instancias es menor que el número definido de réplicas , se basará en RC define la plantilla de pod para crear un nuevo pod y luego programar el pod en el Nodo apropiado para que se inicie y se ejecute. Todo el proceso está completamente automatizado, sin intervención manual.

2 Estructura del marco

Inserte la descripción de la imagen aquí

2.1 Componente maestro

Inserte la descripción de la imagen aquí
El maestro es el centro de control de todo el clúster, todos los comandos de control de kubernetes se envían al maestro, que es responsable del proceso de ejecución específico. Generalmente, el maestro es independiente de una máquina física o virtual, y su importancia es evidente.
(1) Todos los comandos de control del clúster se pasan al componente maestro y se ejecutan en él.
(2) Cada clúster de Kubernetes tiene al menos un conjunto de componentes maestros (actualmente predeterminado: uno).
(3) Cada conjunto de componentes maestros incluye tres componentes centrales (controlador-administrador, servidor y programador) y el centro de configuración de datos del clúster, etc.

2.1.1 apiserver de cubos

Como entrada al sistema Kubernetes, encapsula las operaciones de adición, eliminación, modificación y verificación de objetos centrales, y proporciona clientes externos y llamadas de componentes internos en forma de una interfaz API RESTful. Los objetos REST mantenidos se conservan en Etcd para su almacenamiento.

Proporciona el proceso de servicio clave de la interfaz HTTP Rest, que es la única entrada para todas las operaciones de adición, eliminación, modificación y verificación de recursos, y también el proceso de entrada para el control del clúster. Es el único componente del sistema Kubernetes que habla directamente con etcd.
(1) La única entrada para el control de clústeres, que proporciona los componentes principales de la API RESTful de control de clústeres de Kubernetes.
(2) El centro de interacción y comunicación de datos entre varios componentes del clúster.
(3) Proporcionar mecanismos de seguridad de control de clústeres (autenticación de identidad, autorización y control de admisión).

2.1.2 administrador-controlador-kube

Es el centro de control de automatización de todos los recursos y puede entenderse como el maestro de los objetos de recursos.
(1) El administrador central de varios controladores de recursos en el clúster.
(2) Para cada recurso específico, hay un controlador correspondiente.
(3) Asegúrese de que los recursos correspondientes a cada controlador administrado bajo él estén siempre en el "estado esperado".

Inserte la descripción de la imagen aquí

(1)Replication Controller
管理维护Replication Controller,关联Replication Controller和Pod,保证Replication Controller定义的副本数量与实际运行Pod数量一致。
(2)Node Controller
管理维护Node,定期检查Node的健康状态,标识出(失效|未失效)的Node节点。
(3)Namespace Controller
管理维护Namespace,定期清理无效的Namespace,包括Namesapce下的API对象,比如Pod、Service等。
(4)Service Controller
管理维护Service,提供负载以及服务代理。
(5)EndPoints Controller
管理维护Endpoints,关联Service和Pod,创建Endpoints为Service的后端,当Pod发生变化时,实时更新Endpoints。
(6)Service Account Controller
管理维护Service Account,为每个Namespace创建默认的Service Account,同时为Service Account创建Service Account Secret。
(7)Persistent Volume Controller
管理维护Persistent Volume和Persistent Volume Claim,为新的Persistent Volume Claim分配Persistent Volume进行绑定,为释放的Persistent Volume执行清理回收。
(8)Daemon Set Controller
管理维护Daemon Set,负责创建Daemon Pod,保证指定的Node上正常的运行Daemon Pod。
(9)Deployment Controller
管理维护Deployment,关联Deployment和Replication Controller,保证运行指定数量的Pod。当Deployment更新时,控制实现Replication Controller和 Pod的更新。
(10)Job Controller
管理维护Job,为Jod创建一次性任务Pod,保证完成Job指定完成的任务数目
(11)Pod Autoscaler Controller
实现Pod的自动伸缩,定时获取监控数据,进行策略匹配,当满足条件时执行Pod的伸缩动作。

2.1.3 programador de kube

Realice la selección de nodos (es decir, asigne máquinas) para el Pod recién creado y sea responsable de la programación de recursos del clúster. Los componentes están separados y se pueden reemplazar fácilmente con otros programadores.

Responsable del proceso de programación de recursos (programación pod), que es equivalente a la "sala de despacho" de la empresa de buses.
(1) Supervise la información de la réplica de Pod recién creada a través de la interfaz Watch del servidor API y seleccione el Nodo más adecuado para el Pod a través del algoritmo de programación.
(2) Admite proveedor de algoritmos de programación personalizados.
(3) El algoritmo de programación predeterminado tiene estrategias de preselección y estrategias de optimización integradas, y la toma de decisiones considera los requisitos de recursos, la calidad del servicio, las restricciones de software y hardware, la afinidad, la localidad de los datos y otros parámetros de índice.

2.1.4 Servidor etcd

Los datos de todos los objetos de recursos en Kubernetes se almacenan en etcd, que es la base de datos del estado de almacenamiento de Kubernetes.
(1) La base de datos principal del clúster de Kubernetes almacena todos los objetos y estados de recursos.
(2) Implementado en el mismo nodo con el componente maestro de forma predeterminada.
(3) Los cambios de datos de Etcd se llevan a cabo a través de API Server.

2.2 Componentes del nodo

Inserte la descripción de la imagen aquíAdemás del maestro, las otras máquinas del clúster de Kubernetes se denominan Node y la versión anterior se llama Minion. Un Nodo puede ser una máquina física o una máquina virtual. Algunas cargas de trabajo (es decir, contenedores Docker) se asignarán en cada Nodo. ​​Cuando el Nodo deja de funcionar, las aplicaciones que se ejecutan en él se transferirán a otros Nodos.
Nodo: el nodo de carga de trabajo real en el
clúster de Kubernetes (1) El clúster de Kubernetes lo comparten varios nodos para realizar la carga de trabajo, y el pod se asigna a un nodo específico para su ejecución.
(2) Kubernetes administra los recursos del nodo a través del controlador del nodo. Admite agregar o eliminar nodos dinámicamente en el clúster.
(3) Kubelet y Kube-proxy se implementarán en cada nodo del clúster.

2.2.1 Kubelet

Responsable de administrar contenedores, Kubelet recibirá solicitudes de creación de pod del servidor API de Kubernetes, iniciará y detendrá los contenedores, supervisará el estado de ejecución de los contenedores e informará al servidor API de Kubernetes.

Responsable de la creación, inicio y parada de los contenedores correspondientes de Pod, y trabajar en estrecha colaboración con el nodo maestro para realizar las funciones básicas de la gestión de clústeres.
(1) Componentes del proceso de servicio que no son contenedores ubicados en cada nodo del clúster, un puente entre el maestro y el nodo.
(2) Manejar tareas de administración como la creación de Pod, iniciar y detener emitido por Master a este Nodo; registrar la información del Nodo con API Server.
(3) Supervise el contenedor y los recursos del nodo en el nodo e informe la ocupación de los recursos del nodo al maestro con regularidad.

2.2.2 proxy de kube

Responsable de crear servicios de proxy para Pod, Kubernetes Proxy obtendrá toda la información del servicio del servidor de API de Kubernetes y creará servicios de proxy basados ​​en la información del servicio para implementar el enrutamiento de solicitudes y el reenvío desde el servicio al pod, logrando así una red de reenvío virtual a nivel de Kubernetes. .

Un componente importante para realizar el mecanismo de comunicación y equilibrio de carga de Kubernetes Service.
Kube-proxy se ejecuta en cada Node.
(1) La realización del concepto abstracto de Servicio, la solicitud al Servicio se distribuye al backend Pod (Endpoint) de acuerdo con el algoritmo de estrategia (equilibrio de carga).
(2) El modo iptables se utiliza de forma predeterminada.
(3) Admite el modo de puerto de nodo para lograr acceso externo al Servicio en el clúster.

2.2.3 Motor Docker

El motor de Docker es responsable de la creación y administración de contenedores nativos.
El servicio de contenedor debe ejecutarse en Node.

3 Instalación autónoma

(1) Apague el servicio de muro de protección integrado de centos
#systemctl deshabilite firewalld
#systemctl stop firewalld
(2) Instale el software etcd y Kubernetes
[el software Docker se instalará automáticamente]
#yum install -y etcd kubernetes
(3) Después de instalar el software, modificar dos A archivo de configuración Archivo de configuración de
Docker / etc / sysconfig / docker, donde el contenido de OPTIONS se establece en:

OPTIONS='--selinux-enabled=false --insecure-registry gcr.io'

Archivo de configuración de Kubernets apiserver / etc / kubernetes / apiserver:

将 –adminssion_control参数中的ServiceAccount删除

(4) Inicie todos los servicios en orden:

systemctl start etcd
systemctl start docker
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler
systemctl start kubelet
systemctl start kube-proxy

Supongo que te gusta

Origin blog.csdn.net/qq_20466211/article/details/113033684
Recomendado
Clasificación