Kubernetes 1.16 — como atualizar sem quebrar nada

Kubernetes 1.16 — como atualizar sem quebrar nada

Hoje, 18 de setembro, lançamos mais uma versão do Kubernetes — 1.16. Como sempre, temos muitas melhorias e novidades. Mas gostaria de chamar sua atenção para as seções Action Required do arquivo CHANGELOG-1.16.md. Nestas seções, são publicadas alterações que podem quebrar o funcionamento do seu aplicativo, ferramentas de manutenção do cluster ou exigem alterações nos arquivos de configuração.

Em geral, elas exigem intervenção manual…

Vamos começar imediatamente com uma mudança que, provavelmente, afetará todos que trabalham com Kubernetes há um bom tempo. A API do Kubernetes deixou de dar suporte a versões obsoletas da API de recursos.

Se alguém não sabia ou se esqueceu…A versão da API do recurso é indicada no manifesto, no campo apiVersion: apps/v1

Ou seja:

Tipo de recurso
Versão antiga
O que deve ser substituído

Todos os recursos
apps/v1beta1
apps/v1beta2
apps/v1

implantações
daemonset
replicaset
extension/v1beta1
apps/v1

networkpolicies
extensions/v1beta1
networking.k8s.io/v1

podsecuritypolicies
extensions/v1beta1
policy/v1beta1

Quero também chamar a atenção de que objetos do tipo Ingress também mudaram apiVersion para networking.k8s.io/v1beta1. O valor antigo extensions/v1beta1 ainda é suportado, mas há um bom motivo para atualizar também esta versão nos manifestos.

Há muitas mudanças em vários rótulos de sistema (Node labels) que são atribuídos aos nós.

O Kubelet agora proíbe a atribuição de rótulos arbitrários (anteriormente, eles podiam ser definidos por meio das opções de inicialização kubelet --node-labels), apenas este conjunto foi mantido de permitidos:

kubernetes.io/hostname
kubernetes.io/instance-type
kubernetes.io/os
kubernetes.io/arch

beta.kubernetes.io/instance-type
beta.kubernetes.io/os
beta.kubernetes.io/arch

failure-domain.beta.kubernetes.io/zone
failure-domain.beta.kubernetes.io/region

failure-domain.kubernetes.io/zone
failure-domain.kubernetes.io/region

[*.]kubelet.kubernetes.io/*
[*.]node.kubernetes.io/*

Etiquetas beta.kubernetes.io/metadata-proxy-ready, beta.kubernetes.io/metadata-proxy-ready e beta.kubernetes.io/kube-proxy-ds-ready não são mais adicionados a novos nós, e vários componentes adicionais começaram a usar rótulos um pouco diferentes como node selector:

Componente
Rótulo antigo
Rótulo atual

kube-proxy
beta.kubernetes.io/kube-proxy-ds-ready
node.kubernetes.io/kube-proxy-ds-ready

ip-mask-agent
beta.kubernetes.io/masq-agent-ds-ready
node.kubernetes.io/masq-agent-ds-ready

metadata-proxy
beta.kubernetes.io/metadata-proxy-ready
cloud.google.com/metadata-proxy-ready

o kubeadm agora remove o arquivo de configuração inicial do kubelet bootstrap-kubelet.conf. Se suas ferramentas acessavam este arquivo, mude para usar kubelet.conf, que contém as configurações de acesso atuais.

O Cadvisor não fornece mais métricas pod_name e container_name, se você os usou no Prometheus, migre para métricas pod e container respectivamente.

As chaves da linha de comando foram removidas:

Componente
Chave removida

hyperkube
—make-symlink

kube-proxy
—resource-container

O escalonador passou a usar a versão v1beta1 da API de Eventos. Se você utiliza ferramentas de terceiros para interagir com a API de Eventos, mude para a versão atual.

Um momento de humor. Durante a preparação do lançamento 1.16, foram feitas as seguintes alterações:

  • removida a anotação scheduler.alpha.kubernetes.io/critical-pod na versão v1.16.0-alpha.1
  • a anotação foi recuperada scheduler.alpha.kubernetes.io/critical-pod na versão v1.16.0-alpha.2
  • removida a anotação scheduler.alpha.kubernetes.io/critical-pod na versão v1.16.0-beta.1

Use o campo spec.priorityClassName para especificar a importância do pod.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster