Kubernetes 1.16: como actualizar sen romper nada

Kubernetes 1.16: como actualizar sen romper nada

Hoxe, 18 de setembro, lánzase a próxima versión de Kubernetes: 1.16. Coma sempre, agárdanos moitas melloras e novos produtos. Pero gustaríame chamar a súa atención sobre as seccións Acción necesaria do ficheiro CHANGELOG-1.16.md. Estas seccións publican cambios que poden romper a túa aplicación, ferramentas de mantemento de clúster ou requirir cambios nos ficheiros de configuración.

En xeral, requiren intervención manual...

Comecemos de inmediato cun cambio que probablemente afectará a todos os que levan traballando con kubernetes o tempo suficiente. A API de Kubernetes xa non admite versións antigas da API de recursos.

Se alguén non o soubo ou esqueceu...A versión da API do recurso indícase no manifesto, no campo apiVersion: apps/v1

a saber

Tipo de recurso
versión antiga
Con que se debe substituír

Todos os recursos
apps/v1beta1
apps/v1beta2
aplicacións/v1

despregamentos
daemonset
conxunto de réplicas
extensión/v1beta1
aplicacións/v1

políticas de rede
extensións/v1beta1
networking.k8s.io/v1

políticas de seguridade
extensións/v1beta1
policy/v1beta1

Tamén me gustaría chamar a súa atención sobre o feito de que os obxectos de tipo Ingress tamén cambiou apiVersion en networking.k8s.io/v1beta1. Antigo significado extensions/v1beta1 aínda é compatible, pero hai unha boa razón para actualizar esta versión nos manifestos ao mesmo tempo.

Hai moitos cambios en varias etiquetas do sistema (etiquetas de nodos) que se instalan nos nodos.

Kubelet tiña prohibido establecer etiquetas arbitrarias (anteriormente podían establecerse mediante as teclas de inicio kubelet --node-labels), deixaron só esta lista permitido:

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 xa non se engaden aos novos nodos e varios compoñentes adicionais comezaron a usar etiquetas lixeiramente diferentes como selectores de nodos:

Compoñente
Etiqueta antiga
Etiqueta actual

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

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

kubeadm agora elimina o ficheiro de configuración inicial do kublet que hai detrás bootstrap-kubelet.conf. Se as túas ferramentas estaban accedendo a este ficheiro, cambia a usar kubelet.conf, que almacena a configuración de acceso actual.

Cadvisor xa non ofrece métricas pod_name и container_namese os usaches en Prometheus, vai a métricas pod и container respectivamente.

Elimináronse as teclas co comando de liña:

Compoñente
Chave retraída

hipercubo
--facer-enlace simbólico

kube-proxy
--contedor-recurso

O planificador comezou a usar a versión v1beta1 da API de eventos. Se usas ferramentas de terceiros para interactuar coa API de eventos, cambia á versión máis recente.

Un momento de humor. Durante a preparación da versión 1.16, fixéronse os seguintes cambios:

  • eliminou a anotación scheduler.alpha.kubernetes.io/critical-pod na versión v1.16.0-alpha.1
  • devolveu a anotación scheduler.alpha.kubernetes.io/critical-pod na versión v1.16.0-alpha.2
  • eliminou a anotación scheduler.alpha.kubernetes.io/critical-pod na versión v1.16.0-beta.1

Usa o campo spec.priorityClassName para indicar a importancia da vaina.

Fonte: www.habr.com

Engadir un comentario