|
Este documento foi traduzido usando tecnologia de tradução automática de máquina. Sempre trabalhamos para apresentar traduções precisas, mas não oferecemos nenhuma garantia em relação à integridade, precisão ou confiabilidade do conteúdo traduzido. Em caso de qualquer discrepância, a versão original em inglês prevalecerá e constituirá o texto official. |
Migrando o Azure In-tree para Out-of-tree
O Kubernetes está se afastando da manutenção de provedores de nuvem in-tree.
A partir do Kubernetes 1.29, provedores de nuvem dentro da árvore foram desativados. Você deve desativar DisableCloudProviders e DisableKubeletCloudCredentialProvider para usar o provedor de nuvem Azure in-tree ou migrar do provedor de nuvem in-tree para o provedor fora da árvore. Você pode desativar os gates de recursos necessários definindo feature-gates=DisableCloudProviders=false como um argumento adicional para o Kubelet, o Gerenciador de Controladores e o Servidor API do cluster na configuração avançada do cluster. Além disso, defina DisableKubeletCloudCredentialProvider=false nos argumentos do Kubelet para habilitar a funcionalidade in-tree para autenticação em registros de contêiner Azure para credenciais de pull de imagem. Veja documentação upstream para mais detalhes.
No Kubernetes v1.30 e versões posteriores, os provedores de nuvem in-tree foram removidos. O Rancher permite que você faça upgrade para o Kubernetes v1.30 quando migra de um provedor in-tree para um provedor fora da árvore.
Para migrar do provedor de nuvem in-tree para o provedor de nuvem Azure fora da árvore, você deve parar o gerenciador de controladores kube do cluster existente e instalar o gerenciador de controladores de nuvem Azure.
Se for aceitável ter algum tempo de inatividade durante a migração, siga as instruções para configuração de um provedor de nuvem externo. Estas instruções descrevem como configurar o provedor de nuvem fora da árvore para um cluster recém-provisionado. Durante a configuração, haverá algum tempo de inatividade, pois há um intervalo de tempo entre quando o antigo provedor de nuvem para de funcionar e quando o novo provedor de nuvem começa a funcionar.
Se sua configuração não puder tolerar qualquer tempo de inatividade do plano de controle, você deve habilitar a migração de líder. Isso facilita uma transição suave dos controladores no gerenciador de controladores kube para seus equivalentes no gerenciador de controladores de nuvem.
|
Importante:
A documentação do Kubernetes documentação de migração do controlador de nuvem afirma que é possível migrar com a mesma versão do Kubernetes, mas pressupõe que a migração faz parte de um upgrade do Kubernetes. Consulte a documentação do Kubernetes sobre migrando para usar o gerenciador de controladores de nuvem para ver se você precisa personalizar sua configuração antes de migrar. Confirme seus valores de configuração de migração. Se o seu provedor de nuvem fornecer uma implementação do controlador Node IPAM, você também precisa migrar o controlador IPAM. A partir da versão 1.26 do Kubernetes, os tipos de volume persistente in-tree |
-
RKE2
-
RKE
-
Atualize a configuração do cluster para habilitar a migração de líder:
spec: rkeConfig: machineSelectorConfig: - config: kube-controller-manager-arg: - enable-leader-migration machineLabelSelector: matchExpressions: - key: rke.cattle.io/control-plane-role operator: In values: - 'true'Observe que o provedor de nuvem ainda está
azurenesta etapa:spec: rkeConfig: machineGlobalConfig: cloud-provider-name: azure -
Cordon os nós do plano de controle para que os pods do controlador de nuvem do Azure sejam executados apenas em nós após a atualização para o provedor de nuvem externo:
kubectl cordon -l "node-role.kubernetes.io/control-plane=true" -
Para implantar o gerenciador do controlador de nuvem do Azure, use qualquer uma das opções disponíveis:
-
UI: Siga os passos 1-10 de Instalação do helm chart a partir da UI para instalar o chart do gerenciador do controlador de nuvem.
-
CLI: Siga os passos 1-4 de Instalação do helm chart a partir da CLI.
-
Atualize o manifesto adicional do cluster: Siga os passos 2-3 para instalar o chart do gerenciador do controlador de nuvem.
Confirme que o chart está instalado, mas que os novos pods ainda não estão em execução devido aos nós do plano de controle que estão em cordonamento.
-
-
Para habilitar a migração de líder, adicione
--enable-leader-migrationaos argumentos do contêiner decloud-controller-manager:kubectl -n kube-system patch deployment cloud-controller-manager \ --type=json \ -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--enable-leader-migration"}]' -
Atualize o cluster de provisionamento para alterar o provedor de nuvem e remover os argumentos de migração de líder do gerenciador do controlador kube. Se estiver atualizando a versão do Kubernetes, defina a versão do Kubernetes também na seção
spec.kubernetesVersiondo arquivo YAML do cluster.spec: rkeConfig: machineGlobalConfig: cloud-provider-name: externalRemova
enable-leader-migrationdo gerenciador do controlador kube:spec: rkeConfig: machineSelectorConfig: - config: kube-controller-manager-arg: - enable-leader-migration machineLabelSelector: matchExpressions: - key: rke.cattle.io/control-plane-role operator: In values: - 'true' -
Descordone os nós do plano de controle para que os pods do controlador de nuvem do Azure agora sejam executados em nós:
kubectl uncordon -l "node-role.kubernetes.io/control-plane=true" -
Atualize o cluster. Os pods
cloud-controller-managerdevem agora estar em execução.kubectl rollout status deployment -n kube-system cloud-controller-manager kubectl rollout status daemonset -n kube-system cloud-node-manager -
O provedor de nuvem é responsável por definir o ProviderID do nó. Verifique se todos os nós estão inicializados com o ProviderID:
kubectl describe nodes | grep "ProviderID" -
(Opcional) Você também pode desativar a migração de líder após o upgrade, pois a migração de líder não é necessária com apenas um cloud-controller-manager. Atualize a implantação
cloud-controller-managerpara remover a migração de líder dos argumentos do contêiner:- --enable-leader-migration=true
-
Atualize a configuração do cluster para habilitar a migração de líder em
cluster.yml:services: kube-controller: extra_args: enable-leader-migration: "true"Observe que o provedor de nuvem ainda está
azurenesta etapa:cloud_provider: name: azure -
Cordon os nós do plano de controle, para que os pods do controlador de nuvem do Azure sejam executados em nós apenas após o upgrade para o provedor de nuvem externo:
kubectl cordon -l "node-role.kubernetes.io/controlplane=true" -
Para instalar o gerenciador de controlador de nuvem do Azure, siga os mesmos passos que ao instalar o provedor de nuvem do Azure em um novo cluster:
-
UI: Siga os passos 1-10 de Instalação do helm chart a partir da UI para instalar o chart do gerenciador do controlador de nuvem.
-
CLI: Siga os passos 1-4 de Instalação do helm chart a partir do CLI para instalar o chart do gerenciador do controlador de nuvem.
-
-
Confirme que o chart está instalado, mas que os novos pods ainda não estão em execução devido aos nós do plano de controle que estão em cordonamento. Após atualizar o cluster na próxima etapa, o RKE fará upgrade e descordonará cada nó, e agendará os pods
cloud-controller-manager. -
Para habilitar a migração de líder, adicione
--enable-leader-migrationaos argumentos do contêiner decloud-controller-manager:kubectl -n kube-system patch deployment cloud-controller-manager \ --type=json \ -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--enable-leader-migration"}]' -
Atualize
cluster.ymlpara mudar o provedor de nuvem paraexternale remover os argumentos de migração de líder do kube-controller.rancher_kubernetes_engine_config: cloud_provider: name: externalRemova
enable-leader-migrationse você não quiser que ele esteja habilitado em seu cluster:services: kube-controller: extra_args: enable-leader-migration: "true" -
Se você estiver atualizando a versão do Kubernetes do cluster, defina a versão do Kubernetes também.
-
Atualize o cluster. Os pods
cloud-controller-managerdevem agora estar em execução.kubectl rollout status deployment -n kube-system cloud-controller-manager kubectl rollout status daemonset -n kube-system cloud-node-manager -
O provedor de nuvem é responsável por definir o ProviderID do nó. Verifique se todos os nós estão inicializados com o ProviderID:
kubectl describe nodes | grep "ProviderID" -
(Opcional) Você também pode desativar a migração de líder após o upgrade, pois a migração de líder não é necessária com apenas um cloud-controller-manager. Atualize a implantação
cloud-controller-managerpara remover a migração de líder dos argumentos do contêiner:- --enable-leader-migration=true