[ad_1]
Kubeadm é a ferramenta oficial para instalar e manter um cluster baseado na distribuição padrão do Kubernetes. Os clusters criados não são atualizados automaticamente e desabilitar as atualizações de pacotes para componentes do Kubernetes faz parte do processo de configuração. Isso significa que você deve migrar manualmente seu cluster quando uma nova versão do Kubernetes chegar.
Neste artigo, você aprenderá as etapas envolvidas em uma atualização do Kubernetes ao fazer a transição da v1.24 para a v1.25 no Ubuntu 22.04. O processo normalmente é semelhante para qualquer versão menor do Kubernetes, mas você deve sempre verificar a documentação oficial antes de começar, caso uma nova versão tenha requisitos especiais.
Identificação da versão precisa a ser instalada
A primeira etapa é determinar a versão para a qual você está atualizando. Você não pode pular versões secundárias; por exemplo, não há suporte para ir diretamente da v1.23 para a v1.25, portanto, você deve escolher a versão de patch mais recente para a versão secundária que segue a versão atual do cluster.
Você pode descobrir a versão mais recente do patch com o seguinte comando:
$ apt-cache policy kubeadm | grep 1.25 1.25.1-00 500 1.25.0-00 500
Isto mostra que 1.25.1-00
é a versão mais recente do Kubernetes v1.25. Substituir 1.25
no comando com a versão secundária a ser movida.
Atualização do plano de controle
Complete esta seção na máquina que está executando seu plano de controle. Não toque nos nós do trabalhador ainda – eles podem continuar usando sua versão atual do Kubernetes enquanto o plano de controle é atualizado. Se você tiver vários nós do plano de controle, execute esta sequência no primeiro e siga o procedimento do nó do trabalhador na próxima seção nos outros.
Atualizar Kubeadm
Primeiro libere a suspensão do pacote Kubeadm e instale a nova versão. Especifique a versão exata identificada acima para que o Apt não pegue automaticamente a versão mais recente, o que pode ser um pequeno aumento de versão sem suporte.
$ sudo apt update $ sudo apt-mark unhold kubeadm $ sudo apt install -y kubeadm=1.25.1-00
Agora reaplique o grampo para que apt upgrade
não entrega versões indesejadas no futuro:
$ sudo apt-mark hold kubeadm kubeadm set on hold
Verifique se o Kubeadm agora é a versão esperada:
$ kubeadm version --short kubeadm version: &version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.1"...
Criar plano de atualização
O Kubeadm automatiza o processo de atualização do plano de controle. Primeiro use o upgrade plan
comando para definir para quais versões você pode migrar. Isso verifica seu cluster para garantir que ele aceite a nova versão.
$ sudo kubeadm upgrade plan
A saída é bastante longa, mas vale a pena inspecioná-la de perto. A primeira seção deve informar que todos os componentes do Kubernetes serão atualizados para o número da versão que você selecionou anteriormente. Novas versões para CoreDNS e etcd também podem ser mostradas.
COMPONENT CURRENT TARGET kube-apiserver v1.24.5 v1.25.1 kube-controller-manager v1.24.5 v1.25.1 kube-scheduler v1.24.5 v1.25.1 kube-proxy v1.24.5 v1.25.1 CoreDNS v1.8.6 v1.9.3 etcd 3.5.3-0 3.5.4-0
A parte inferior da saída inclui uma tabela que mostra as alterações de configuração necessárias. Ocasionalmente, pode ser necessário realizar uma ação manual para ajustar esses arquivos de configuração e fornecê-los ao cluster. Verifique a documentação da sua versão se receber um “sim” na coluna “Atualização manual necessária”.
API GROUP CURRENT VERSION PREFERRED VERSION MANUAL UPGRADE REQUIRED kubeproxy.config.k8s.io v1alpha1 v1alpha1 no kubelet.config.k8s.io v1beta1 v1beta1 no
Este cluster agora está pronto para ser atualizado. O plano confirmou que o Kubernetes v1.25.1 está disponível e nenhuma ação manual é necessária. Verifique se você instalou a versão correta do Kubeadm se nenhum plano ocorrer ou aparecerem erros. Você pode estar tentando alternar entre mais de uma versão secundária.
Aplicativo de plano de atualização
Agora você pode dizer ao Kubeadm para prosseguir com a aplicação do plano de atualização executando upgrade apply
com o número de versão correto:
$ sudo kubeadm upgrade apply v1.25.1
Uma mensagem de confirmação aparecerá:
[upgrade/version] You have chosen to change the cluster version to "v1.25.1" [upgrade/versions] Cluster version: v1.24.5 [upgrade/versions] kubeadm version: v1.25.1 [upgrade] Are you sure you want to proceed? [y/N]:
Imprensa y
para continuar com a atualização. O processo pode levar vários minutos, pois ele extrai as imagens dos novos componentes e reinicia seu plano de controle. Você não poderá interagir de maneira confiável com a API do cluster durante esse período, mas todos os pods em execução devem permanecer operacionais em seus nós.
Eventualmente, você deverá ver uma mensagem de sucesso:
[upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.25.1". Enjoy!]
O plano de controle foi atualizado.
Atualizar nós de trabalho
Agora você pode fazer upgrade de seus nós do trabalhador. estes passos também deve ser executado em nós do plano de controle. Atualize cada nó em sequência para minimizar os efeitos da remoção de capacidade do cluster. Os pods serão reprogramados para outros nós à medida que cada um for atualizado.
Primeiro, drene o nó de seus pods existentes e coloque um cordão ao redor dele. Substituir no nome do nó em vez de node-1
nos comandos a seguir.
$ kubectl cordon node-1 $ kubectl drain node-1
Isso ejeta os pods do nó e impede que novos sejam agendados. O nó agora está inativo em seu cluster.
Em seguida, solte o gerenciador de pacotes e segure o kubeadm
, kubectl
S kubelet
pacotes Instale a nova versão de cada um. As versões de todos os três pacotes devem corresponder exatamente. Lembre-se de definir o estado de espera novamente depois de ter as novas versões.
$ sudo apt update $ sudo apt-mark unhold kubeadm kubectl kubelet $ sudo apt install -y kubeadm=1.25.1-00 kubectl=1.25.1-00 kubelet=1.25.1-00 $ sudo apt-mark hold kubeadm kubectl kubelet
Próximo uso do Kubeadm upgrade node
comando para aplicar a atualização e atualizar a configuração do nó:
$ sudo kubeadm upgrade node
Por fim, reinicie o serviço Kubelet e coloque o nó offline. Ele deve se juntar ao cluster e começar a aceitar novos pods.
$ sudo systemctl daemon-reload $ sudo systemctl restart kubelet $ kubectl uncordon node-1
Verificando seu cluster
Após a atualização, execute kubectl version
para verificar se a versão ativa corresponde às suas expectativas:
$ kubectl version --short Client Version: v1.25.1 ... Server Version: v1.25.1
Em seguida, verifique se todos os seus nós estão relatando sua nova versão e entraram no Ready
doença:
$ kubectl get nodes -o wide NAME STATUS ROLES AGE VERSION ubuntu22 Ready control-plane 70m v1.25.1
A atualização está agora concluída.
Recuperando-se de uma falha de atualização
Ocasionalmente, uma atualização pode falhar mesmo que o Kubeadm planeje com sucesso um caminho e verifique o status do seu cluster. Podem ocorrer problemas se a atualização for interrompida ou um componente do Kubernetes parar de responder. O Kubeadm deve reverter automaticamente para a versão anterior se isso acontecer.
a upgrade apply
O comando pode ser repetido com segurança para tentar novamente uma atualização com falha. Ele detectará maneiras pelas quais seu cluster difere da versão esperada, permitindo que você tente a recuperação de falhas totais e atualizações parciais.
Quando a repetição do comando não funcionar, você pode tentar forçar a atualização adicionando o --force
sinalizar para comandar:
$ kubeadm upgrade apply --force
Isso permitirá que a atualização continue em situações em que os requisitos estão ausentes ou não podem mais ser atendidos.
Quando ocorrer um desastre e seu cluster parecer totalmente quebrado, você poderá restaurá-lo usando os arquivos de backup que o Kubeadm grava automaticamente:
- Copie o conteúdo de
/etc/kubernetes/tmp/kubeadm-backup-etcd-<date>-<time>
em você/var/lib/etcd
diretório. - Copie o conteúdo de
/etc/kubernetes/tmp/kubeadm-backup-manifests-<date>-<time>
em você/etc/kubernetes/manifests
diretório.
Esses backups podem ser usados para restaurar manualmente a versão anterior do Kubernetes para um estado de funcionamento.
Resumo
Atualizar o Kubernetes com Kubeadm não deve ser muito estressante. A maior parte do processo é automatizada e seu envolvimento é limitado à instalação dos novos pacotes e à verificação do plano de atualização.
Antes de atualizar, você deve sempre verificar o log de alterações do Kubernetes e qualquer documentação publicada pelos componentes que você usa em seu cluster. Interfaces de rede de pod, controladores de entrada, provedores de armazenamento e outros plug-ins podem ter incompatibilidades com uma nova versão do Kubernetes ou exigir suas próprias rotinas de atualização.
[ad_2]