Instalación de los componentes del Nodo Maestro
Para iniciar la configuración del plano de control (Control Plane), el primer paso es instalar el paquete base de Kubernetes en el nodo destinado a ser el maestro. En sistemas basados en Red Hat o CentOS, esto se realiza mediante el gestor de paquetes:
yum -y install kubernetes
Configuración del Servicio kube-apiserver
El archivo de configuración principal para el servidor de la API se encuentra generalmente en /etc/kubernetes/apiserver. Es fundamental definir correctamente los puntos de enlace de etcd y los rangos de red para los servicios.
Edite el archivo con los siguientes parámetros ajustados a su infraestructura:
# Dirección de escucha para peticiones no seguras
API_LISTEN_ADDR="--insecure-bind-address=0.0.0.0"
# Puerto de comunicación
API_LISTEN_PORT="--port=8080"
# Listado de nodos del clúster etcd
ETCD_ENDPOINTS="--etcd-servers=http://node-etcd1:2379,http://node-etcd2:2379,http://node-etcd3:2379"
# Rango de IPs virtuales para los Services y rango de puertos para NodePort
SERVICE_NET_CONFIG="--service-cluster-ip-range=172.16.0.0/16 --service-node-port-range=3000-65535"
# Plugins de control de admisión activos
ADMISSION_PLUGINS="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
# Argumentos adicionales
KUBE_API_CUSTOM_ARGS=""
Desglose de parámetros clave:
- --etcd-servers: Define las URLs donde reside la base de datos distribuida del clúster.
- --insecure-bind-address: Determina en qué interfaz escuchará el API Server. Al usar 0.0.0.0 se permite el acceso desde cualquier interfaz de red.
- --service-cluster-ip-range: Define el bloque CIDR para las direcciones IP de los servicios internos, el cual no debe solaparse con la red física.
- --admission-control: Especifica los módulos que validan o modifican las solicitudes antes de ser procesadas por el API Server.
Ajustes Globales del Clúster
Es necesario configurar la dirección del maestro para que todos los componentes locales puedan comunicarse de manera efectiva. Esto se define en /etc/kubernetes/config.
# Registro de errores a la salida estándar
LOG_STDERR="--logtostderr=true"
# Nivel de detalle del log
LOG_LEVEL="--v=0"
# Restricción de contenedores privilegiados
PRIV_MODE="--allow-privileged=false"
# Ubicación del servidor API principal
MASTER_ENDPOINT="--master=http://k8s-master-node:8080"
Gestión de Servicios del Control Plane
Una vez configurados los archivos, se deben habilitar e iniciar los tres procesos principales del nodo maestro para que el clúster comience a operar:
# Habilitar el inicio automático al arrancar el sistema
systemctl enable kube-apiserver kube-controller-manager kube-scheduler
# Iniciar los servicios inmediatamente
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler
Arquitectura y Funciones de los Componentes
kube-apiserver
Actúa como el front-end del plano de control. Es el único componente que interactúa directamente con etcd. Proporciona una interfaz RESTful que permite la comunicación entre los diferentes componentes internos y externos, gestionando la autenticación, autorización y la validación de los datos del clúster.
kube-controller-manager
Es el encaragdo de ejecutar los bucles de control. Su función principal es observar el estado actual del clúster (a través del API Server) y realizar los cambios necesarios para alcanzar el estado deseado. Por ejemplo, asegura que el número de réplicas de un Pod coincida con lo definido por el usuario.
kube-scheduler
Este componente se encarga de la asignación de recursos. Analiza los requerimientos de los nuevos Pods creados y determina, basándose en la disponibilidad de recursos, políticas y restricciones, en qué nodo de trabajo (Worker Node) deben ejecutarse. Sus objetivos principales son garantizar la alta disponibilidad, la eficiencia en el uso de recursos y el cumplimiento de las reglas de afinidad.