Kubernetes 1.26

O que você precisa saber?

João Brito
3 min readDec 15, 2022

--

Na última sexta-feira (9), foi lançada a versão 1.26 do Kubernetes e eu vou passar nesse artigo por algumas das principais atualizações do código.

CRI, Kubelet e ContainerD

Até a versão 1.25 do Kubernetes, o Kubelet negociava com a API do CRI (Container Runtime Interface) [v1], sendo a versão recomendada e aceita a [v1alpha2], porém ela está sendo depreciada também pelo próprio CRI e não será mais aceita pelo Kubelet. Então, se está utilizando o containerd menor que 1.5, terá que atualizá-lo antes de fazer um upgrade no Kubernetes.

Obs.: tem uma gambiarra que dá pra fazer, rodando o Control Plane na versão 1.26 e mantendo o Kubelet na 1.25. Acesse a dica diretamente da documentação aqui.

HorizontalPodAutoscaler (HPA)

A versão da API [v2beta2] não estará mais disponível, sendo necessário agora atualizar seus manifestos para a versão [v2].

Flags depreciadas

Existe ainda a iniciativa por nomenclaturas inclusivas que irá substituir, por exemplo, a flag [ — prune-whitelist] por [ — prune-allowlist]. Esse movimento favorece um futuro mais inclusivo. Saiba mais aqui.

Ainda sobre flags, algumas do [kubectl run] serão depreciadas, como a — force, — wait, — timeout, entre outras. Saiba mais aqui.

Alocação dinâmica de recursos {ALPHA}

Antigamente, o Kubernetes gerenciava apenas CPU e Memória, depois passou a controlar storage e agora poderá controlar também outros recursos diretamente da declaração do POD, alocando-os apenas em nodes que possuam esses recursos declarados. (Mais detalhes)

Métricas de SLI {ALPHA}

Indicadores de nível de serviço ou SLI poderão estar disponíveis diretamente no endpoint [/metrics/slis], sendo possível exportar e visualizar diretamente a saúde do cluster, monitorar e criar alertas em cima desta métrica. (Mais detalhes)

Provisionando volumes de um snapshot em outro namespace {ALPHA}

Apesar de já existir a feature [VolumeSnapshot], ela tem uma limitação que impede a criação de um PVC a partir de um snapshot de outro namespace. A feature [CrossNamespaceVolumeDataSource] irá resolver essa limitação. (Mais detalhes)

Controle do primeiro número da réplica do statefulset {ALPHA}

Pode parecer estranho controlar o número inicial das réplicas que até hoje iniciavam em {0}, porém, em cenários cada vez mais complexos e com multi-cluster virando realidade, essa mudança poderá facilitar, por exemplo, uma migração sem downtime. (Mais detalhes)

Deleção forçada de pods de um statefulset num node morto {BETA}

Quando um node morre de forma inesperada, o Kubelet não fornece a informação de que seus pods estão mortos para a API do Kubernetes, fazendo com que o statefulset não possa recriar aquele pod com um mesmo nome e conectar o mesmo volume. A feature [Non-graceful node shutdown] permitirá essa deleção forçada. (Mais detalhes)

Dica final

Claro que existem outras novidades na versão 1.26 do Kubernetes, mas eu escolhi as que achei mais importantes para tratar aqui. Você pode encontrar todas as alterações nos Release Notes.

LEMBRETE! Antes de atualizar seu cluster, veja quais atualizações afetam seu ambiente. Uma ferramenta ótima para este fim é o KubePug. Verifique e se prepare!

--

--

João Brito

Blog moved to getup.io/blog - A devops enthusiast. Trying to establish myself in this crazy market that until yesterday called me a sysadmin.