Construcción de un clúster de Kubernetes de alta disponibilidad
Componentes del clúster de Kubernetes:
alta disponibilidad del clúster K8, generalmente la alta disponibilidad de los componentes de servicio etcd, kube-apiserver, kube-controller-manager y kube-scheduler.
Planificación:
3 nodos maestros y 2 nodos trabajadores, utilizando keepalived+haproxy para lograr alta disponibilidad.
1. Preparación preliminar del entorno
Kubernetes 1.8 comienza a requerir que se apague el cambio del sistema. Si no se apaga, kubelet no se iniciará de forma predeterminada.
El método 1 cambia esta restricción a través del parámetro de inicio de kubelet –fail-swap-on = false.
Método 2: Desactiva el Swap del sistema, swap-a.
Modifique el archivo /etc/fstab, comente el montaje automático de swap y use free -m para confirmar que SWAP se ha cerrado.
2. Instalación de Docker
Instale docker-ce, todos los nodos deben estar instalados.
Yum-utils proporciona la herramienta yum-config-manager y el almacenamiento de devicemapper requiere device-mapper-persistent-data y lvm2.
Agregar repositorio fuente de yum
Repositorio oficial
Instalar Docker
Configurar el acelerador de imágenes de Docker China, cambiar el controlador cgroup a systemd, k8s Se recomienda utilizar systemd y reiniciar Docker después de la configuración.
En tercer lugar, instale haproxy y keepalived
Instale haproxy y keepalived para lograr una alta disponibilidad de kube-apiserver.
Psmisc proporciona el comando killall.
Configuración de haproxy
Configuración del estado de mantenimiento de actividad
Nota: En los otros dos nodos, establezca el estado en copia de seguridad y la prioridad en 110 y 100.
Inicie haproxy y mantenga todos los nodos activos.
Ver VIP
Tenga en cuenta que si usa el comando ifconfig, no podrá verlo. Debes utilizar el comando ip addr.
En este momento, el vip está en 130.252.10.235, por lo que desactivamos haproxy en 235 y verificamos si el vip se desplazará a otros nodos.
Cuatro. Instalar kubeadm/kubelet/kubectl
Instalación del nodo maestro: kubeadm, kubelet, kubectl.
Instalación del nodo nodo: kubeadm, kubelet
Fijo
5. Inicialice el clúster con kubeadm.
Paso 1 Prepare el archivo de configuración de inicialización
Modifique la configuración según su propio entorno.
El paso 2 maneja la duplicación de las dependencias de Kubernetes.
El espejo requerido por el maestro es
El espejo requerido por el nodo nodo es
Ver la versión del espejo requerida.
Extraiga la imagen
6. Inicialice el primer nodo maestro
Nota: si deshabilita la partición de intercambio, no necesita agregar -ignore-prefix. -errores=intercambiar.
Configurar kubectl
Habilitar la finalización automática de comandos de kubectl
7. Instalar podnet flannel.
Octavo, agregue otros nodos maestros al clúster.
Copie el archivo de certificado del nodo1 a otros nodos maestros, nodo2 y nodo3.
Ejecute los siguientes comandos en master1 y master2 respectivamente.
9. Agregar nodos al clúster.
X. Comprobar el estado del clúster.
Ver el estado del nodo en el nodo maestro.
Todos los nodos no están listos porque cada nodo necesita iniciar varios componentes, que se ejecutan en pods y necesitan descargar imágenes de Google.
Verifique el estado del pod
Verifique la información del clúster
Verifique el clúster etcd
Compruebe si el clúster es normal.
Ver el líder del clúster
Nota: debido a que es un clúster etcd de 3 nodos, solo se puede cerrar un nodo. Si dos nodos están inactivos al mismo tiempo, ocurrirá un problema: No se puede conectar al servidor: EOF.
El clúster Etd requiere una mayoría de nodos (quórum) para acordar las actualizaciones de estado del clúster, por lo que los nodos del clúster ETCD generalmente tienen un número impar y pueden ejecutarse normalmente solo cuando el número de nodos supervivientes es mayor que el número de nodos fuera de línea. Para un clúster ETCD de 5 nodos, dos nodos pueden fallar al mismo tiempo.
Generalmente se recomiendan cinco nodos. Más de cinco nodos proporcionan una mayor tolerancia a fallos, pero la capacidad de escritura del clúster será deficiente.
Consulta IPVS