Implementación fuera de línea de CentOS 7 del clúster K8S

Introducción a K8S

En primer lugar, es una nueva solución líder de arquitectura distribuida basada en tecnología de contenedores. Kubernetes (k8s) es el sistema de gestión de clúster de contenedores de código abierto de Google (dentro 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 administración de clústeres de contenedores a gran escala.
Kubernetes es una plataforma completa de soporte de sistema distribuido con capacidades completas de administración de clúster, mecanismos de acceso y protección de seguridad de múltiples niveles y expansión múltiple, capacidades de soporte de aplicaciones de múltiples inquilinos, mecanismos de descubrimiento y registro de servicios transparentes, y equilibrador de carga inteligente incorporado , Capacidades potentes de detección de fallas y reparación automática, actualización continua de servicios y capacidades de expansión en línea, mecanismo de programación automática de recursos escalable y capacidades de gestión de cuotas de recursos multigranulares. Al mismo tiempo, Kubernetes proporciona herramientas integrales de gestión que cubren todos los aspectos, incluidos el desarrollo, las pruebas de implementación, la supervisión de la operación y el mantenimiento.

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

Tener un nombre asignado de forma exclusiva,
tener una IP virtual (IP de clúster, IP de servicio o VIP) y un número de puerto
para integrar una cierta capacidad de servicio remoto
a un conjunto de aplicaciones de contenedor que brindan esta capacidad de servicio

Ventajas de Kubernetes:

Orquestación de contenedores
ligero, de
código abierto,
escalado elástico
, equilibrio de carga

concepto k8s

Implementación fuera de línea de CentOS 7 del clúster K8S

racimo

Cluster es una colección de recursos informáticos, de almacenamiento y de red, y k8s utiliza estos recursos para ejecutar varias aplicaciones basadas en contenedores.

Maestro

El maestro es el cerebro del clúster y su principal responsabilidad es la programación, que es decidir poner la aplicación para que se ejecute allí. El maestro ejecuta el sistema operativo Linux y puede ser una máquina física o una máquina virtual. Para lograr una alta disponibilidad, puede ejecutar varios maestros.

nodo

La responsabilidad del nodo es ejecutar aplicaciones de contenedor. El nodo es administrado por el maestro, el cual es responsable de monitorear e informar el estado del contenedor, y al mismo tiempo administra el ciclo de vida del contenedor de acuerdo con los requisitos del maestro. Node se ejecuta en el sistema operativo Linux y puede ser una máquina física o una máquina virtual.

bajo

Pod es la unidad de trabajo más pequeña para k8. Cada cápsula contiene uno o más contenedores. Los contenedores en el pod serán programados por el maestro como un todo para ejecutarse en un nodo.

Implementación fuera de línea de CentOS 7 del clúster K8S

controlador

Los K8 generalmente no crean pods directamente, pero los maneja a través de controladores. El controlador define las características de implementación del pod, por ejemplo, hay varios scripts y qué tipo de nodo se está ejecutando en él. Para cumplir con diferentes escenarios comerciales, k8s ofrece una variedad de controladores, que incluyen implementación, replicación, conjunto de daemon, conjunto de estado, trabajo, etc.

despliegue

Es el controlador más utilizado. La implementación puede administrar múltiples copias del pod y garantizar que el pod funcione en el estado deseado.

conjunto de réplicas

Logre múltiples copias de la gestión de pod. Replicaset se crea automáticamente cuando se usa la implementación, lo que significa que la implementación es para administrar múltiples copias de pods a través de replicaset. Por lo general, no necesitamos usar replicaset directamente.

daemonset

Se utiliza para escenarios en los que a lo sumo se ejecuta una copia de pod por nodo. Como su nombre indica, daemonset generalmente se usa para ejecutar daemon.

conjunto de estados

Puede garantizar que cada copia del pod tenga el mismo nombre durante todo el ciclo de vida, y otros controladores no proporcionan esta función. Cuando un pod falla y necesita eliminarse y reiniciarse, el nombre del pod cambiará y el conjunto de estado garantizará que las copias se inicien, actualicen o eliminen en un orden fijo.

trabajo

Se usa para aplicaciones que se eliminan al final de la ejecución, y los pods en otros controladores generalmente se ejecutan continuamente durante mucho tiempo.

Servicio

La implementación puede implementar múltiples copias, cada pod tiene su propia IP, ¿cómo accede el mundo exterior a estas copias?
La respuesta es que el servicio del servicio
k8s define cómo el mundo exterior accede a un conjunto específico de pods. El servicio tiene su propia IP y puerto, y proporciona un equilibrio de carga para el pod.
El controlador y el servicio ejecutan las dos tareas de ejecutar pod contenedores y acceder a contenedores en k8s respectivamente.

espacio de nombres

Un clúster físico puede dividirse lógicamente en múltiples clústeres virtuales, cada clúster es un espacio de nombres. Los recursos en diferentes espacios de nombres están completamente aislados.

Arquitectura de Kubernetes:

Agrupación de servicios, agrupación pequeña, agrupación de servicios de agrupación múltiple
, agrupación grande, agrupación única

Componentes de Kubernetes:

Componentes de control de Kubernetes Master, gestión de programación de todo el sistema (clúster), incluidos los siguientes componentes:

Servidor API Kubernetes

Como entrada del sistema Kubernetes, encapsula las operaciones de adición, eliminación, modificación e inspección de los objetos principales, y proporciona a los clientes externos y componentes internos una interfaz API RESTful. Los objetos REST mantenidos se conservan en Etcd para su almacenamiento.

Kubernetes Scheduler

Selección de nodos (es decir, asignación de máquinas) para Pods recientemente establecidos, responsables de la programación de recursos del clúster. Los componentes están separados y se pueden reemplazar fácilmente con otros planificadores.
  

Controlador del gobernador

Responsable de la ejecución de varios controladores, se han proporcionado muchos controladores para garantizar el funcionamiento normal de Kubernetes.

Controlador de replicación

Administre y mantenga el Controlador de replicación, asocie el Controlador de replicación y el Pod, y asegúrese de que la cantidad de copias definidas por el Controlador de replicación sea la misma que la cantidad real de Pods.
  

Controlador de nodo

Administre y mantenga el nodo, compruebe regularmente el estado del nodo e identifique nodos (fallidos | no fallidos).

Controlador de espacio de nombres

Administre y mantenga el espacio de nombres, y limpie periódicamente el espacio de nombres no válido, incluidos los objetos API en Namesapce, como Pod y Servicio

Controlador de servicio

Gestionar y mantener el Servicio, proporcionar carga y agente de servicio.

Controlador EndPoints

Administre y mantenga los puntos finales, asocie el servicio y el pod, cree los puntos finales como el back-end del servicio y actualice los puntos finales en tiempo real cuando cambie el pod.

Controlador de cuenta de servicio

Administre y mantenga una cuenta de servicio, cree una cuenta de servicio predeterminada para cada espacio de nombres y cree un secreto de cuenta de servicio para la cuenta de servicio al mismo tiempo.

Controlador de volumen persistente

Administre y mantenga Volumen persistente y Reclamo de volumen persistente, asigne Volumen persistente para que se vincule el nuevo Reclamo de volumen persistente y realice la limpieza y recuperación del Volumen persistente lanzado.

Controlador de conjunto de demonios

Administre y mantenga el conjunto de Daemon, responsable de crear Daemon Pods y garantizar el funcionamiento normal de Daemon Pods en el nodo especificado.

Controlador de implementación

Administre y mantenga la implementación, asocie el Controlador de implementación y replicación y asegúrese de que se esté ejecutando un número específico de pods. Cuando se actualiza la implementación, controla la actualización del Controlador de replicación y el Pod.

Controlador de trabajo

Administre y mantenga trabajos, cree pods de tareas únicas para trabajos y asegúrese de completar la cantidad de tareas especificadas por el trabajo

Controlador de autoescalador de pod

Logre el escalado automático de Pod, obtenga regularmente datos de monitoreo, realice una coincidencia de políticas y ejecute la acción de escalado de Pod cuando se cumplan las condiciones.

El nodo en ejecución del nodo K8S, contenedor empresarial de gestión en ejecución, contiene los siguientes componentes:

Es un bebe

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

Proxy Kubernetes

Responsable de crear un servicio proxy para Pods. Kubernetes Proxy obtendrá toda la información del Servicio del Servidor API de Kubernetes y creará un servicio proxy basado en la información del Servicio para implementar el enrutamiento y reenvío de solicitudes del Servicio a Pods, implementando así una red de reenvío virtual a nivel de Kubernetes.

Estibador

El nodo necesita ejecutar el servicio de contenedor

Configuración del entorno

Nombre de host Dirección IP Papel Configuracion
Maestro 192.168.0.110 Nodo maestro 2C 2G
Maestro 192.168.0.104 Nodo de trabajo 2C 2G
Maestro 192.168.0.106 Nodo de trabajo 2C 2G

Observaciones: al menos 2 núcleos y 2 g de máquinas virtuales en el entorno experimental

El proceso de despliegue

1. Descarga y carga de paquetes de software

1. Dirección de descarga del disco de red Baidu

Enlace: https://pan.baidu.com/s/1Qzs8tcf4O-8xlTmnl2Qx5g
código de extracción: ah4y

En segundo lugar, la optimización del entorno básico del servidor (la misma operación de las tres unidades)

1. Cerrar la pared protectora, seguridad

sed -i 's / SELINUX = imposición / SELINUX = deshabilitado / g' / etc / selinux / config
setenforce 0
systemctl stop firewalld
systemctl disable firewalld

2. Sincronización de hora del servidor

timedatectl set-timezone Asia / Shanghai

3. Modificar el nombre del host

hostnamectl set-hostname master && bash
hostnamectl set-hostname node01 && bash
hostnamectl set-hostname node02 && bash

4. Agregue el archivo de hosts

vim / etc / hosts # Agregue resolución de nombre de host
al final:
192.168.0.110 maestro
192.168.0.104 nodo1
192.168.0.106 nodo2

Las otras 2 unidades se pueden agregar o copiar archivos:

scp / etc / hosts [email protected]: / etc / hosts
scp / etc / hosts [email protected]: / etc / hosts

5. Cierre el intercambio de memoria de intercambio

swapoff -a # Cerrar temporalmente
sed -i '12s / ^ \ // # \ // g' / etc / fstab #Cerrar permanentemente

6. Configuración del puente

echo -e "net.bridge.bridge-nf-call-ip6tables = 1 \ nnet.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.d/k8s.conf
sysctl --system #make Eficaz

Tercero, desplegar docker (la misma operación de los tres)

1. Descomprima e instale la ventana acoplable

tar -zxvf docker-ce-18.09.tar.gz
cd docker && yum localinstall * .rpm -y #yum dependencias relacionadas con la instalación

2. Inicie la ventana acoplable

systemctl start docker
systemctl enable docker # 开机 启动
versión docker

Acelerador 3.docker

vim /etc/docker/daemon.json #Add

{
"registro-espejos": [" https://fskvstob.mirror.aliyuncs.com/ "]
}

systemctl daemon-reload #Reload

Cuarto, despliegue el clúster K8

3 juegos de la misma operación

1. Descomprima e instale k8s

cd ../
tar -zxvf kube114-rpm.tar.gz
cd kube114-rpm && yum localinstall * .rpm -y #yum

2. Importar imagen k8s

cd ../
docker load -i k8s-114-images.tar.gz
docker load -i flannel -dashboard.tar.gz

Nota: Si se produce el siguiente error al importar la imagen:
Implementación fuera de línea de CentOS 7 del clúster K8S

El motivo del error: se produjo un problema al descargar el paquete de compresión de imágenes
Solución: vuelva a descargar o reemplace la imagen

3. Ver imagen k8s

imágenes del acoplador # 9 imágenes en total

Implementación fuera de línea de CentOS 7 del clúster K8S

Solo opere en el maestro

4.inicialización maestra

kubeadm init - versión-kubernetes = v1.14.1 - pod-network-cidr = 10.244.0.0 / 16

Implementación fuera de línea de CentOS 7 del clúster K8S

5. Ver nodo

kubectl get node

Implementación fuera de línea de CentOS 7 del clúster K8S

kubectl get pod --todos los espacios de nombres

Implementación fuera de línea de CentOS 7 del clúster K8S

6. Configure la variable KUBECONFIG

echo "exportar KUBECONFIG = / etc / kubernetes / admin.conf" >> / etc / profile
source / etc / profile
echo $ KUBECONFIG # debe devolver /etc/kubernetes/admin.conf

Implementación fuera de línea de CentOS 7 del clúster K8S

7. Despliegue la red de franela

kubectl create -f kube-flannel.yml
kubectl get node

Implementación fuera de línea de CentOS 7 del clúster K8S

Operación del servidor en el nodo nodo

8.kubeadm join nodo de nodo de unión

systemctl enable kubelet #Agregar boot k8s
kubeadm join 192.168.0.110:6443 --token 2vjmyw.9p6cbn8m8oqs41ta \
--discovery-token-ca-cert-hash sha256: e4c1d3e9da26e2f488dec621122a30dbf2525c

Implementación fuera de línea de CentOS 7 del clúster K8S

9. Ver en el maestro

kubectl get node

Implementación fuera de línea de CentOS 7 del clúster K8S

10. Implemente la interfaz de usuario de k8s (tablero)

kubectl apply -f kubernetes-dashboard.yaml
kubectl apply -f admin-role.yaml
kubectl apply -f kubernetes-dashboard-admin.rbac.yaml
kubectl -n kube-system get svc

11. Verificación de la página web

Implementación fuera de línea de CentOS 7 del clúster K8S

Materiales de referencia:

1. Artículo de referencia https://www.jianshu.com/p/0e1a3412528e
2. Consulte el video de enseñanza de k8s de Lao Qi
3. Documento chino oficial de k8s de referencia https://kubernetes.io/zh/docs/home/

Supongo que te gusta

Origin blog.51cto.com/13760351/2488508
Recomendado
Clasificación