4.3 administrador-controlador-kube
Implemente un clúster kube-controller-manager de tres instancias. Después del inicio, se generará un nodo líder a través de un mecanismo de elección competitiva y otros nodos estarán en estado bloqueado. Cuando el nodo líder no está disponible, el nodo bloqueado volverá a elegir un nuevo nodo líder para garantizar la disponibilidad del servicio.
Estrategia de implementación:
Planificación de implementación de software
Crear solicitud de firma de certificado:
Crear certificado kube-controller-manager y clave privada:
Como resultado, se generarán los siguientes archivos:
kube-controller-manager utiliza el archivo kubeconfig para acceder al apiserver, que proporciona la dirección del apiserver, el certificado de CA y el kube-controller. -certificado de administrador
Primero determine la dirección donde apiserver proporciona servicios externos
Utilice el certificado de cuenta de servicio generado en el documento de kube-apiserver, donde kube-apiserver usa la clave pública y kube-controller-manager utiliza la clave privada.
kube-controller-manager se puede iniciar y detener de la siguiente manera:
Compruebe si el proceso es normal
Verifique los permisos:
ClusterRole system:kube-controller-manager tiene permisos muy pequeños y solo puede crear objetos de recursos como secreto y cuenta de servicio. Los permisos de cada controlador se distribuyen al sistema ClusterRole:controller:XXX.
Al agregar el parámetro --use-service-account-credentials=true a los parámetros de inicio de kube-controller-manager, el controlador principal creará el controlador XXX ServiceAccount correspondiente para cada controlador. El sistema ClusterRoleBinding integrado: controlador: XXX otorgará a cada cuenta de servicio del controlador XXX los permisos correspondientes del sistema ClusterRole: controlador: XXX.
Echa un vistazo al controlador de implementación
kube-controller-manager, el cerebro de k8s, donde se encuentran la mayoría de los controladores, el gran ama de llaves, la configuración incluye:
Iniciar la elección.
Aprovechando la fuerte consistencia de etcd, se puede utilizar para seleccionar componentes. Kube-controller-manager utiliza esta función para lograr una alta disponibilidad.
Condiciones de alta disponibilidad: El número de kube-controller-manager es mayor o igual a 2.
El tiempo de espera de desalojo, predeterminado en 5 minutos, configurado en 3 minutos, comienza cuando el controlador detecta que el nodo está inactivo.
Tasa de desalojo de primer nivel, donde dos 0,1 equivalen a desalojar un Pod de cada nodo cada 10 segundos.
Cuando se habilitan varias zonas de disponibilidad, la tasa de desalojo de primer nivel solo entra en vigor cuando la zona está en buen estado; cuando no se habilitan varias zonas de disponibilidad, la zona representa todo el clúster.
Tasa de desalojo secundario, donde dos 0,1 equivalen a desalojar un Pod de cada nodo cada 10 segundos.
Establezca el umbral de un clúster "grande". El valor predeterminado es 50. Cuando el número de nodos del clúster es menor que este valor, la tasa de desalojo secundario es 0 y no se realiza ningún desalojo.
La zona se considera en mal estado cuando más del 55% de los nodos fallan (el número de nodos NodeReady es mayor o igual a 3
Ejemplo:
Por ejemplo, la ZonaB ahora tiene 20 nodos, luego, cuando más de 20 * 0,55 = 11 nodos cuelgan, esta Zona se considera insalubre y la tasa de desalojo de primer nivel no tendrá efecto en este momento ya que el punto de resumen es; mayor que 1, entonces la tasa de segundo nivel es efectiva, por lo que todo el clúster será desalojado a 10 s/pod/nodo.
P:
R:
P:
R:
Debe agregar lo siguiente a el comando de inicio Configuración