Kubernetes 1.16: cómo actualizar y no romper nada



Hoy, 18 de septiembre, se lanza la próxima versión de Kubernetes: 1.16. Como siempre, encontraremos muchas mejoras y nuevos productos. Pero me gustaría llamar su atención sobre las secciones del archivo Acción requerida CHANGELOG-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 afecte a todos los que han estado trabajando con kubernetes durante bastante tiempo. La API de Kubernetes ha dejado de admitir versiones heredadas de la API de recursos.

Si alguien no lo sabía, o se olvidó ...
La versión de la API de recursos se indica en el manifiesto en el campo apiVersion: apps/v1

A saber:
Tipo de recursoVersión antiguaLo que debe ser reemplazado
Todos los recursosapps / v1beta1
apps / v1beta2
aplicaciones / v1
implementaciones
daemonset
conjunto de réplicas
extensiones / v1beta1aplicaciones / v1
políticas de redextensiones / v1beta1networking.k8s.io/v1
políticas de seguridadextensiones / v1beta1política / v1beta1
También quiero señalar que para objetos como Ingress apiVersion también apiVersion cambiado a networking.k8s.io/v1beta1 . El antiguo extensions/v1beta1 todavía extensions/v1beta1 compatible, pero hay una buena razón para actualizar esta versión en manifiestos al mismo tiempo.

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

Se prohibió a Kubelet establecer etiquetas arbitrarias (antes de que se pudieran establecer a través de las kubelet --node-labels ), dejaron solo esta lista de permitidas :

 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/* 

Las etiquetas beta.kubernetes.io/metadata-proxy-ready , beta.kubernetes.io/masq-agent-ds-ready y beta.kubernetes.io/kube-proxy-ds-ready ya no se agregan a nuevos nodos, y varios más los componentes comenzaron a usar etiquetas ligeramente diferentes como un selector de nodo:
ComponenteEtiqueta antiguaEtiqueta actual
kube-proxybeta.kubernetes.io/kube-proxy-ds-readynode.kubernetes.io/kube-proxy-ds-ready
ip-mask-agentbeta.kubernetes.io/masq-agent-ds-readynode.kubernetes.io/masq-agent-ds-ready
proxy de metadatosbeta.kubernetes.io/metadata-proxy-readycloud.google.com/metadata-proxy-ready
kubeadm ahora elimina el archivo de configuración inicial de bootstrap-kubelet.conf . Si sus herramientas accedieron a este archivo, cambie a usar kubelet.conf , que almacena la configuración de acceso actual.

Cadvisor ya no proporciona las métricas pod_name y container_name , si las usó en Prometheus, vaya a las métricas pod y container , respectivamente.

Las claves se eliminaron con la línea de comando:
ComponenteClave eliminada
hipercubo--make-symlink
kube-proxy- contenedor de recursos
Sheduler comenzó a usar la versión v1beta1 Event API. Si utiliza herramientas de terceros para interactuar con la API de eventos, cambie a la versión actual.

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

  • Anotación eliminada scheduler.alpha.kubernetes.io/critical-pod en la versión v1.16.0-alpha.1
  • Anotación devuelta scheduler.alpha.kubernetes.io/critical-pod en la versión v1.16.0-alpha.2
  • Anotación eliminada scheduler.alpha.kubernetes.io/critical-pod en la versión v1.16.0-beta.1

Use el campo spec.priorityClassName para indicar la importancia del hogar.

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


All Articles