Versões desatualizadas do Kubernetes expõem os clusters a vulnerabilidades de segurança conhecidas e limitam o acesso ao suporte técnico. O ACK Edge usa atualizações in-place para migrar seus clusters para uma nova versão do Kubernetes sem exigir a recriação do cluster. Este tópico aborda as restrições de versão, o procedimento de atualização em três fases e os requisitos de migração de runtime para a versão 1,24.
Por que atualizar
Vulnerabilidades de segurança: novas versões corrigem falhas conhecidas. O ACK Edge não aplica retroativamente correções de segurança em versões desatualizadas.
Suporte limitado: o ACK Edge não garante a qualidade do suporte para versões antigas. A atualização restabelece a cobertura total de suporte técnico.
Novos recursos: cada lançamento traz melhorias que proporcionam uma experiência mais fluida de desenvolvimento e operações.
Observações de uso
O ACK Edge suporta atualizações entre as versões 1,18 e 1,24 do Kubernetes. Também há suporte para atualizações para a versão 1,26 e posteriores.
As atualizações são sequenciais: você só pode avançar para a próxima versão secundária (minor version). Para atualizar da versão 1,18 para a 1,22, atualize primeiro para a 1,20 e depois para a 1,22.
Não há suporte para rollback. Após a atualização, não é possível reverter um cluster para uma versão anterior do Kubernetes.
Para atualizar do Kubernetes 1,26 para o 1,30, envie um ticket para ser adicionado à lista de permissões.
Os pools de nós de borda e o plano de controle podem ter, no máximo, duas versões secundárias de diferença. Por exemplo, se o plano de controle executa o Kubernetes 1,22, os pools de nós de borda devem executar pelo menos o Kubernetes 1,20.
Como funciona
A atualização de um cluster ACK Edge ocorre em três fases sequenciais:
|
Fase |
Escopo |
Duração estimada |
|
Plano de controle |
kube-apiserver, kube-controller-manager, kube-scheduler |
~5 minutos |
|
Pools de nós na nuvem |
kubelet, runtime de contêiner por pool de nós |
~5 minutos por lote |
|
Pools de nós de borda |
Todos os nós, atualizados individualmente |
Varia conforme a quantidade de nós |
O plano de controle usa atualizações contínuas (rolling updates). Os pools de nós na nuvem são atualizados um por vez, com os nós processados em lotes: o primeiro lote contém um nó, e cada lote subsequente dobra de tamanho. Já os pools de nós de borda exigem a execução do comando de atualização em cada nó individualmente.
Pré-requisitos
Antes de começar, certifique-se de que você tem:
Acesso ao ACK console com permissões de gerenciamento de cluster
Revisado as release notes for ACK Edge Kubernetes 1.30 ou as notas de lançamento da sua versão de destino
Verificado a versão atual do Kubernetes do seu cluster na coluna Version da página ACK consoleClusters
Etapa 1: Atualizar o plano de controle
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster que deseja atualizar. No painel à esquerda, escolha Operations > Upgrade Cluster.
-
Na página Upgrade Cluster, defina a Destination Version e clique em Precheck. Após a conclusão da verificação prévia, analise os resultados na seção Pre-check Results:
Sem problemas: o cluster passou na verificação prévia. Prossiga para a próxima etapa.
Problemas encontrados: o cluster continua funcionando normalmente e seu status não é alterado. Corrija os problemas com base nas sugestões do console antes de continuar. Para mais detalhes, consulte Cluster check items and suggestions on how to fix cluster issues.
Para clusters executando Kubernetes 1,20 ou posterior, a verificação prévia também busca o uso de APIs obsoletas. A detecção de uma API obsoleta não bloqueia a atualização — o resultado é apenas informativo. Para mais detalhes, consulte Deprecated APIs .
Clique em Start Update e siga as instruções na tela. Acompanhe o progresso no painel de histórico de atualizações, no canto superior direito da página Upgrade Cluster. Após a conclusão da atualização, acesse a página Clusters e confirme se a versão do Kubernetes foi alterada. Novos nós adicionados a partir deste momento usarão automaticamente a nova versão.
Etapa 2: Atualizar pools de nós na nuvem
Após concluir a atualização do plano de controle, atualize seus pools de nós na nuvem fora dos horários de pico. Cada atualização de pool de nós substitui o kubelet e o runtime de contêiner em todos os nós.
Os pools de nós são atualizados sequencialmente — apenas um pool é atualizado por vez. Dentro de cada pool, os nós são atualizados em lotes: o primeiro lote contém um nó, os lotes subsequentes dobram de tamanho, e o limite máximo de tamanho do lote se aplica mesmo após retomar uma atualização pausada. Defina o tamanho máximo do lote na página Node Pool Upgrade. Um tamanho máximo de lote de 10 funciona bem para a maioria dos clusters.
Para etapas detalhadas e observações sobre a atualização, consulte Update an on-cloud node pool.
Etapa 3: Atualizar pools de nós de borda
Conclua a atualização do plano de controle antes de iniciar esta etapa. Um pool de nós de borda é considerado totalmente atualizado somente quando todos os nós do pool forem atualizados.
Execute o comando de atualização em todos os nós, um por vez, no pool de nós de borda:
export REGION="" INTERCONNECT_MODE="" TARGET_CLUSTER_VERSION=""; export ARCH=$(uname -m | awk '{print ($1 == "x86_64") ? "amd64" : (($1 == "aarch64") ? "arm64" : "amd64")}') INTERNAL=$( [ "$INTERCONNECT_MODE" = "private" ] && echo "-internal" || echo "" ); wget http://aliacs-k8s-${REGION}.oss-${REGION}${INTERNAL}.aliyuncs.com/public/pkg/run/attach/${TARGET_CLUSTER_VERSION}/${ARCH}/edgeadm -O edgeadm; chmod u+x edgeadm;./edgeadm upgrade --interconnect-mode=${INTERCONNECT_MODE} --region=${REGION}
Substitua os espaços reservados antes de executar o comando:
|
Parâmetro |
Descrição |
Exemplo |
|
|
A versão do Kubernetes do plano de controle atualizado |
|
|
|
ID da região do cluster |
|
|
|
Tipo de rede para conexões de nó: |
|
Uma atualização bem-sucedida gera a seguinte saída:
INFO[2024-03-20T20:02:35+08:00] component edge-hub:v0.10.1 backup successfully
INFO[2024-03-20T20:02:35+08:00] component edge-hub:v0.10.1 uninstall successfully
INFO[2024-03-20T20:02:40+08:00] component edge-hub:v0.10.3 install successfully
INFO[2024-03-20T20:02:50+08:00] component edge-hub:v0.10.3 is ready
INFO[2024-03-20T20:02:50+08:00] This node has been upgraded successfully
[root@iZbp17m64crsyhim52dg76Z ~]#
Migração de runtime para Docker (atualização para 1,24)
O Kubernetes 1,24 removeu o suporte ao runtime Docker. Se algum nó do seu cluster utilizar Docker, migre-os para containerd como parte da atualização para a versão 1,24.
(Recomendado) Migração contínua: crie um novo pool de nós com o runtime containerd e expanda sua capacidade. Migre gradualmente as cargas de trabalho definindo o pool de nós antigo como não agendável ou atualizando os rótulos de agendamento das cargas. Em seguida, desative o pool de nós antigo. Para detalhes sobre a criação de pools de nós, consulte Gerenciamento de pools de nós de borda. Para detalhes sobre como definir nós como não agendáveis, consulte Node draining and scheduling status.
-
Atualização in-place: drene o nó antes da atualização e execute o comando de atualização. Todos os contêineres no nó serão reiniciados durante o processo.
Drene o nó.
-
Execute o seguinte comando em todos os nós, um por vez, no pool de nós de borda:
export REGION="" INTERCONNECT_MODE="" TARGET_CLUSTER_VERSION=""; export ARCH=$(uname -m | awk '{print ($1 == "x86_64") ? "amd64" : (($1 == "aarch64") ? "arm64" : "amd64")}') INTERNAL=$( [ "$INTERCONNECT_MODE" = "private" ] && echo "-internal" || echo "" ); wget http://aliacs-k8s-${REGION}.oss-${REGION}${INTERNAL}.aliyuncs.com/public/pkg/run/attach/${TARGET_CLUSTER_VERSION}/${ARCH}/edgeadm -O edgeadm; chmod u+x edgeadm;./edgeadm upgrade --interconnect-mode=${INTERCONNECT_MODE} --region=${REGION}Substitua os espaços reservados antes de executar o comando:
Parâmetro
Descrição
Exemplo
TARGET_CLUSTER_VERSIONA versão do Kubernetes do plano de controle atualizado
1.24.6-aliyunedge.1— consulte Release notes for supported Kubernetes versionsREGIONID da região do cluster
cn-hangzhou— consulte Supported regionsINTERCONNECT_MODETipo de rede para conexões de nó:
basic(rede pública) ouprivate(circuitos Express Connect)basicUma atualização bem-sucedida gera a seguinte saída:
INFO[2024-03-20T20:02:35+08:00] component edge-hub:v0.10.1 backup successfully INFO[2024-03-20T20:02:35+08:00] component edge-hub:v0.10.1 uninstall successfully INFO[2024-03-20T20:02:40+08:00] component edge-hub:v0.10.3 install successfully INFO[2024-03-20T20:02:50+08:00] component edge-hub:v0.10.3 is ready INFO[2024-03-20T20:02:50+08:00] This node has been upgraded successfully [root@iZbp17m64crsyhim52dg76Z ~]#
Verificar a atualização
Após a conclusão das três fases, confirme se a atualização foi bem-sucedida:
Na página Clusters, verifique se a versão do Kubernetes exibida na coluna Version corresponde à versão de destino.
Confira se os pools de nós estão em execução e se os nós apresentam status íntegro.
Valide se as cargas de trabalho no cluster estão operando conforme o esperado.
Perguntas frequentes
O ACK Edge força atualizações de cluster?
Não. As atualizações de clusters ACK Edge são exclusivamente manuais. Se você optar por não atualizar, o cluster permanecerá na versão atual do Kubernetes. Recomendamos atualizar prontamente para manter o acesso a patches de segurança e suporte técnico completo.
O que fazer se um nó de borda falhar na atualização?
Se o comando de atualização não retornar This node has been upgraded successfully, consulte What do I do if an edge node fails to be upgraded when I upgrade an ACK Edge cluster?
Próximos passos
Se o seu cluster falhar na verificação prévia, consulte Cluster check items and suggestions on how to fix cluster issues.
Para criar ou gerenciar pools de nós de borda, consulte Edge node pool management.