Kubernetes Cluster Architecture Question #019e3a4f
Qual componente do plano de controle é responsável por atualizar a condição Ready do nó se um nó se tornar inacessível?
O kube-proxy.
O node controller.
O kubelet.
O kube-apiserver.
Official Explanation / Community Explanations
O node controller é o componente do plano de controle do Kubernetes responsável por monitorar a saúde dos nós e atualizar a condição NodeReady quando um nó se torna inacessível. Ele é executado como parte do kube-controller-manager e verifica periodicamente o status de cada nó através do kube-apiserver. Se um nó falhar em reportar seu status dentro do node-monitor-grace-period configurado (padrão de 40 segundos), o node controller marca o nó como Unknown e, eventualmente, após node-monitor-grace-period mais pod-eviction-timeout (padrão de 5 minutos), ele remove os pods do nó inacessível.
Como funciona:
- O node controller usa o
NodeLifecycleControllerpara gerenciar eventos do ciclo de vida do nó. - Ele define a condição
NodeReadycomoUnknownquando o heartbeat do nó não é recebido. - Em seguida, ele transita o nó para
NotReadyse a condição persistir. - O node controller também lida com taints e tolerations para inacessibilidade de nós.
Por que as outras opções estão incorretas:
- O kube-proxy é um proxy de rede que é executado em cada nó, lidando com rede de serviços e balanceamento de carga. Ele não monitora a saúde dos nós nem atualiza as condições dos nós.
- O kubelet é o agente primário do nó que é executado em cada nó e registra o nó no cluster, mas ele não atualiza a condição
NodeReadyda perspectiva do plano de controle. O kubelet reporta o status do nó ao kube-apiserver, mas o node controller é quem avalia e atualiza a condição. - O kube-apiserver é o front-end do plano de controle do Kubernetes, expondo a API do Kubernetes. Ele armazena o status do nó no etcd, mas não monitora ou atualiza ativamente as condições dos nós; essa é a responsabilidade do node controller.