← CKA: administração Kubernetes e diagnóstico
02 / 13 · 50 MIN

Preparar, instalar e atualizar o cluster

Relaciona os pré-requisitos, a identidade do endpoint e a sequência de versões com a evidência de um cluster utilizável.

Preparação que evita repetir o bootstrap

Antes de init, prepara nomes e identidades únicos, resolução e conectividade entre os nós, recursos suficientes e acesso às imagens necessárias. Compara o espaço de endereços dos hosts, Pods e Services; redes sobrepostas criam ambiguidades que um objeto Ready não elimina.

O runtime precisa de fornecer CRI compatível. O socket configurado no kubelet tem de corresponder ao runtime em funcionamento; a existência de um serviço com nome containerd não prova que o plugin CRI esteja ativo. Lê os erros de preflight e os logs locais antes de alterar outro componente.

Estado do host e configuração efetiva

A configuração de swap deve corresponder à política suportada pelo kubelet: não confundas failSwapOn: false com autorização para os workloads usarem swap. Esta última depende também de swapBehavior e dos requisitos da versão. Kubelet e runtime precisam de uma visão consistente de cgroups.

Com KubeletCgroupDriverFromCRI ativo e um runtime que suporte RuntimeConfig, a deteção pelo CRI pode prevalecer sobre cgroupDriver no ficheiro. Portanto, compara versões e estado efetivo; editar uma chave sem saber quem a usa pode não alterar nada.

Mudar o driver num nó já utilizado exige uma estratégia de substituição ou manutenção que respeite os Pods existentes.

Init, rede de Pods e join

kubeadm init prepara o control plane e produz instruções de acesso e join. Guarda tokens e material de administração como credenciais, não como texto de um relatório público. Instala um plugin de rede compatível e a respetiva configuração; kubeadm não fornece sozinho toda a conectividade dos Pods.

A aceitação deve observar nós, componentes, resolução de nomes e tráfego a partir de um cliente representativo. No join, separa um timeout para o endpoint, uma rejeição de identidade/CA e um token expirado. Repetir init no worker não corrige essas fases.

Se existem vários sockets CRI, identifica o pretendido em vez de aceitar uma escolha ambígua.

Alta disponibilidade e dependências comuns

Um endpoint API estável deve corresponder ao controlPlaneEndpoint e encaminhar para control planes saudáveis. Três servidores atrás de um único balanceador sem recuperação mantêm uma dependência comum. Num desenho stacked, o membro etcd acompanha o control plane; num desenho com etcd externo, esse conjunto tem operação e falhas próprias.

O quórum precisa de uma maioria: três membros exigem dois disponíveis; distribuir Pods não altera essa conta. Planeia falhas de host, rede e zona, com recuperação dos dados de estado. Um backup presente não prova que o restauro funciona nem que as aplicações recuperam os seus próprios dados.

Atualizar sem violar a compatibilidade

Para passar de 1.35 para 1.37 com kubeadm, percorre 1.36 e depois 1.37, escolhendo patches e pré-requisitos suportados em cada etapa. upgrade plan identifica o caminho e verificações; upgrade apply atua no primeiro control plane e upgrade node nos seguintes, de acordo com a documentação da versão.

Atualizar kubeadm não atualiza automaticamente todos os pacotes kubelet/kubectl ou o CNI. Num conjunto misto de API servers 1.36 e 1.37, um kubelet 1.37 que comunica com ambos fica mais recente que um deles: conclui a etapa dos API servers antes dessa atualização.

O skew máximo entre componentes é um limite de compatibilidade, não uma autorização para saltar versões no procedimento kubeadm.

Decidir com uma sequência de observação

O bloco abaixo recolhe estado. kubeadm version indica a versão do binário local, não a versão de todos os componentes do cluster. Usa o contexto lab apenas se for o nome do teu ambiente autorizado. Compara condições e versões antes e depois de uma etapa, e recolhe o estado do cliente que precisa do serviço.

Um drain bloqueado por PDB é informação para a decisão: verifica réplicas saudáveis, capacidade e risco acordado, em vez de retirar a proteção para cumprir a hora. Para erros locais do kubelet/runtime, mantém observações por nó e correlaciona-as com o API server.

Regista a mudança exata e o critério de aceitação, sem copiar kubeconfigs ou tokens para as evidências partilhadas.

kubectl config current-context
kubectl --context=lab get nodes -o wide
kubectl --context=lab get pods -n kube-system -o wide
kubectl --context=lab get events -A --sort-by=.metadata.creationTimestamp
kubeadm version
NA PRÁTICA

Uma equipa prepara uma janela para três control planes stacked. O primeiro já usa 1.37, os outros ainda usam 1.36; o plano propõe atualizar todos os workers de imediato. O balanceador também tem um único endereço num host sem recuperação.

Separa as duas decisões: terminar a sequência compatível dos API servers e corrigir o ponto comum do endpoint. Não declares o cluster resiliente pelo número de máquinas.

Armadilhas comuns

Repetir init perante qualquer falha; desativar verificações de CA; inferir quórum pela quantidade de Pods; confundir tolerar swap com usá-la; atualizar todos os componentes ao mesmo tempo sem verificar o skew.

Tópicos relacionados: Administração Kubernetes · Diagnóstico e recuperação

Leva esta ideia contigo

Aceita cada fase pelo seu efeito: host preparado, identidade confirmada, rede funcional e sequência de versões compatível.

Criar conta

Referências

Kubernetes® e CKA são marcas comerciais ou marcas registadas de The Linux Foundation. A dr.pt é uma plataforma de preparação independente e não está afiliada, associada, patrocinada, autorizada nem aprovada por The Linux Foundation. Os conteúdos e as perguntas são originais, não são perguntas oficiais de exame, e concluir os nossos testes não atribui nem garante qualquer certificação. Os nomes são usados apenas para identificar o tema. Todas as outras marcas pertencem aos respetivos titulares.