Kubernetes 1.16 - como atualizar e não quebrar nada



Hoje, 18 de setembro, a próxima versão do Kubernetes é lançada - 1.16. Como sempre, encontraremos muitas melhorias e novos produtos. Gostaria de chamar sua atenção para as seções do arquivo de ação necessária CHANGELOG-1.16.md . Essas seções publicam alterações que podem interromper seu aplicativo, ferramentas de manutenção de cluster ou exigir alterações nos arquivos de configuração.

Em geral, requerem intervenção manual ...

Vamos começar imediatamente com uma mudança que provavelmente afetará todos os que trabalham com o kubernetes há algum tempo. A API do Kubernetes parou de oferecer suporte a versões herdadas da API do recurso.

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

Ou seja:
Tipo de recursoVersão antigaO que deve ser substituído
Todos os recursosapps / v1beta1
apps / v1beta2
apps / v1
implantações
daemonset
replicaset
extensions / v1beta1apps / v1
políticas de redeextensions / v1beta1networking.k8s.io/v1
podsecuritypoliciesextensions / v1beta1policy / v1beta1
Também quero observar que, para objetos como o Ingress apiVersion também mudou para networking.k8s.io/v1beta1 . O valor antigo extensions/v1beta1 ainda extensions/v1beta1 suportado, mas há um bom motivo para atualizar esta versão em manifestos ao mesmo tempo.

Há muitas alterações nos vários rótulos do sistema (rótulos dos nós) instalados nos nós.

O Kubelet foi proibido de definir rótulos arbitrários (antes que eles pudessem ser definidos através das kubelet --node-labels do kubelet --node-labels ), eles deixaram apenas esta lista de nomes 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/* 

Os rótulos beta.kubernetes.io/metadata-proxy-ready , beta.kubernetes.io/masq-agent-ds-ready e beta.kubernetes.io/kube-proxy-ds-ready não beta.kubernetes.io/kube-proxy-ds-ready mais adicionados a novos nós e vários adicionais componentes começaram a usar rótulos ligeiramente diferentes como um seletor de nó:
ComponenteRótulo antigoTag atual
kube-proxybeta.kubernetes.io/kube-proxy-ds-readynode.kubernetes.io/kube-proxy-ds-ready
agente-máscara-ipbeta.kubernetes.io/masq-agent-ds-readynode.kubernetes.io/masq-agent-ds-ready
proxy de metadadosbeta.kubernetes.io/metadata-proxy-readycloud.google.com/metadata-proxy-ready
O kubeadm agora remove o arquivo de configuração inicial do bootstrap-kubelet.conf . Se suas ferramentas acessaram esse arquivo, mude para o kubelet.conf , que armazena as configurações de acesso atuais.

O Cadvisor não fornece mais as métricas pod_name e container_name ; se você as usou no Prometheus, acesse as métricas de pod e container , respectivamente.

As chaves foram removidas com a linha de comando:
ComponenteChave removida
hyperkube--make-symlink
kube-proxy--resource-container
O Sheduler começou a usar a API de eventos da versão v1beta1. Se você usar ferramentas de terceiros para interagir com a API de eventos, mude para a versão atual.

Um momento de humor. No processo de preparação do release 1.16, as seguintes alterações foram feitas:

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

Use o campo spec.priorityClassName para indicar a importância da lareira.

Source: https://habr.com/ru/post/pt467883/


All Articles