Como atualizar um cluster Kubernetes criado com Kubeadm

0
262

[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, kubectlS 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]