Kubernetes 1.16: cómo actualizar sin romper nada

Kubernetes 1.16: cómo actualizar sin romper nada

Hoy, 18 de septiembre, se lanza la próxima versión de Kubernetes: la 1.16. Como siempre nos esperan muchas mejoras y nuevos productos. Pero me gustaría llamar su atención sobre las secciones Acción requerida del archivo. REGISTRO DE CAMBIOS-1.16.md. Estas secciones publican cambios que pueden dañar su aplicación, las herramientas de mantenimiento del clúster o requerir cambios en los archivos de configuración.

En general, requieren intervención manual...

Comencemos de inmediato con un cambio que probablemente afectará a todos los que han trabajado con Kubernetes durante el tiempo suficiente. La API de Kubernetes ya no admite versiones heredadas de API de recursos.

Si alguien no lo supo o lo olvidó...La versión API del recurso se indica en el manifiesto, en el campo apiVersion: apps/v1

A saber

Tipo de recurso
Versión antigua
¿Con qué se debe reemplazar?

Todos los recursos
aplicaciones/v1beta1
aplicaciones/v1beta2
aplicaciones / v1

Despliegues
demonio
conjunto de réplicas
extensión/v1beta1
aplicaciones / v1

políticas de red
extensiones/v1beta1
redes.k8s.io/v1

políticas de seguridad del pod
extensiones/v1beta1
política/v1beta1

También me gustaría llamar su atención sobre el hecho de que los objetos del tipo Ingress también cambió apiVersion en networking.k8s.io/v1beta1. Antiguo significado extensions/v1beta1 todavía es compatible, pero hay una buena razón para actualizar esta versión en los manifiestos al mismo tiempo.

Hay bastantes cambios en varias etiquetas del sistema (etiquetas de nodo) que se instalan en los nodos.

A Kubelet se le prohibió establecer etiquetas arbitrarias (antes se podían configurar mediante claves de inicio). kubelet --node-labels), dejaron solo 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 y beta.kubernetes.io/kube-proxy-ds-ready ya no se agregan a los nuevos nodos, y varios componentes adicionales han comenzado a usar etiquetas ligeramente diferentes como selectores de nodos:

componente
etiqueta vieja
Etiqueta actual

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

agente-máscara-ip
beta.kubernetes.io/masq-agent-ds-ready
node.kubernetes.io/masq-agent-ds-ready

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

kubeadm ahora elimina el archivo de configuración inicial del kublet detrás de él bootstrap-kubelet.conf. Si sus herramientas estaban accediendo a este archivo, entonces cambie a usar kubelet.conf, que almacena la configuración de acceso actual.

Cadvisor ya no proporciona métricas pod_name и container_namesi los usaste en Prometheus, ve a métricas pod и container respectivamente.

Se eliminaron las claves con el comando de línea:

componente
llave retraída

hiperkube
--hacer-enlace simbólico

proxy de kube
--contenedor-de-recursos

El programador comenzó a utilizar la versión v1beta1 de la API de eventos. Si utiliza herramientas de terceros para interactuar con la API de eventos, cambie a la última versión.

Un momento de humor. Durante la preparación de la versión 1.16, se realizaron los siguientes cambios:

  • eliminó la anotación scheduler.alpha.kubernetes.io/critical-pod en la versión v1.16.0-alpha.1
  • devolvió la anotación scheduler.alpha.kubernetes.io/critical-pod en la versión v1.16.0-alpha.2
  • eliminó la anotación scheduler.alpha.kubernetes.io/critical-pod en la versión v1.16.0-beta.1

Usa el campo spec.priorityClassName para indicar la importancia de la vaina.

Fuente: habr.com

Añadir un comentario