Kubernetes 1.16 - comment mettre à niveau sans rien casser

Kubernetes 1.16 - comment mettre à niveau sans rien casser

Aujourd'hui, 18 septembre, la prochaine version de Kubernetes est publiée : la 1.16. Comme toujours, de nombreuses améliorations et nouveautés nous attendent. Mais je voudrais attirer votre attention sur les sections Action requise du fichier CHANGELOG-1.16.md. Ces sections publient des modifications susceptibles de perturber votre application, les outils de maintenance du cluster ou de nécessiter des modifications des fichiers de configuration.

En général, ils nécessitent une intervention manuelle...

Commençons tout de suite par un changement qui affectera très probablement tous ceux qui travaillent avec Kubernetes depuis assez longtemps. L'API Kubernetes ne prend plus en charge les anciennes versions de l'API de ressources.

Si quelqu'un ne savait pas ou avait oublié...La version API de la ressource est indiquée dans le manifeste, dans le champ apiVersion: apps/v1

À savoir

Type de ressource
Ancienne version
Par quoi faut-il remplacer

Toutes les ressources
applications/v1beta1
applications/v1beta2
applications/v1

déploiements
ensemble de démons
jeu de réplicas
extension/v1bêta1
applications/v1

politiques de réseau
extensions/v1beta1
mise en réseau.k8s.io/v1

politiques de sécurité des pods
extensions/v1beta1
politique/v1beta1

Je voudrais également attirer votre attention sur le fait que les objets de type Ingress a également changé apiVersion sur networking.k8s.io/v1beta1. Ancien sens extensions/v1beta1 est toujours pris en charge, mais il y a une bonne raison de mettre à jour cette version dans les manifestes en même temps.

De nombreux changements ont été apportés aux différentes étiquettes système (étiquettes de nœud) installées sur les nœuds.

Il était interdit à Kubelet de définir des étiquettes arbitraires (auparavant, elles pouvaient être définies via les clés de lancement) kubelet --node-labels), ils n'ont laissé que cette liste permis:

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

Mots clés beta.kubernetes.io/metadata-proxy-ready, beta.kubernetes.io/metadata-proxy-ready et beta.kubernetes.io/kube-proxy-ds-ready ne sont plus ajoutés aux nouveaux nœuds, et divers composants supplémentaires ont commencé à utiliser des étiquettes légèrement différentes comme sélecteurs de nœuds :

composant
Ancienne étiquette
Étiquette actuelle

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

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

proxy de métadonnées
beta.kubernetes.io/metadata-proxy-ready
cloud.google.com/metadata-proxy-ready

kubeadm supprime désormais le fichier de configuration initial du kublet derrière lui bootstrap-kubelet.conf. Si vos outils accédaient à ce fichier, passez à l'utilisation kubelet.conf, qui stocke les paramètres d'accès actuels.

Cadvisor ne fournit plus de métriques pod_name и container_namesi vous les avez utilisés dans Prometheus, accédez aux métriques pod и container respectivement.

Suppression des clés avec la commande line :

composant
Clé rétractée

hyperkube
--make-symlink

Kube-proxy
--conteneur-de-ressources

Le planificateur a commencé à utiliser la version v1beta1 de l'API Event. Si vous utilisez des outils tiers pour interagir avec l'API Event, passez à la dernière version.

Un moment d'humour. Lors de la préparation de la version 1.16, les modifications suivantes ont été apportées :

  • supprimé l'annotation scheduler.alpha.kubernetes.io/critical-pod en version v1.16.0-alpha.1
  • a renvoyé l'annotation scheduler.alpha.kubernetes.io/critical-pod en version v1.16.0-alpha.2
  • supprimé l'annotation scheduler.alpha.kubernetes.io/critical-pod en version v1.16.0-bêta.1

Utiliser le terrain spec.priorityClassName pour indiquer l'importance de la gousse.

Source: habr.com

Ajouter un commentaire