
Aujourd'hui, le 18 septembre, une nouvelle version de Kubernetes - 1.16 - est publiée. Comme toujours, nous attendent de nombreuses améliorations et nouveautés. Mais je voudrais attirer votre attention sur les sections Action Required du fichier . Dans ces sections, les modifications qui pourraient casser le fonctionnement de votre application, des outils de gestion de cluster ou nécessitant des modifications dans les fichiers de configuration sont publiées.
En général, elles nécessitent une intervention manuelle...
Commençons tout de suite par le changement qui, très probablement, affectera tous ceux qui travaillent avec Kubernetes depuis longtemps. L'API Kubernetes ne prend plus en charge les anciennes versions de l'API des ressources.
Si quelqu'un ne le savait pas, ou avait oublié...La version de l'API de la ressource est indiquée dans le manifeste, dans le champ apiVersion: apps/v1
À savoir :
Le type de ressource
Ancienne version
À quoi remplacer
Toutes les ressources
apps/v1beta1
apps/v1beta2
apps/v1
déploiements
daemonset
replicaset
extension/v1beta1
apps/v1
networkpolicies
extensions/v1beta1
networking.k8s.io/v1
podsecuritypolicies
extensions/v1beta1
policy/v1beta1
Je voudrais également attirer votre attention sur le fait que les objets de type Ingress ont également changé apiVersion sur networking.k8s.io/v1beta1. L'ancienne valeur extensions/v1beta1 est encore prise en charge, mais il est bon de mettre à jour cette version dans les manifestes.
Il y a beaucoup de changements dans les différentes étiquettes système (Node labels) qui sont appliquées aux nœuds.
Kubelet a interdit l'application d'étiquettes arbitraires (auparavant, elles pouvaient être définies via les clés de démarrage kubelet --node-labels), laissant seulement cette liste :
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/*
Étiquettes beta.kubernetes.io/metadata-proxy-ready, beta.kubernetes.io/metadata-proxy-ready et beta.kubernetes.io/kube-proxy-ds-ready ne sont plus ajoutées aux nouveaux nœuds, et divers composants supplémentaires ont commencé à utiliser d'autres étiquettes comme sélecteur de nœud :
Composant
Ancienne étiquette
Étiquette actuelle
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
metadata-proxy
beta.kubernetes.io/metadata-proxy-ready
cloud.google.com/metadata-proxy-ready
Kubeadm supprime maintenant le fichier de configuration initial du kubelet. bootstrap-kubelet.conf. Si vos outils accédaient à ce fichier, passez à l'utilisation de kubelet.conf, qui contient les paramètres d'accès actuels.
Cadvisor ne retourne plus les métriques pod_name et container_name, si vous les avez utilisées dans Prometheus, passez aux métriques pod et container respectivement.
Les clés de ligne de commande suivantes ont été supprimées :
Composant
Clé supprimée
hyperkube
—make-symlink
kube-proxy
--resource-container
Le planificateur utilise maintenant la version v1beta1 de l'API d'événements. Si vous utilisez des outils tiers pour interagir avec l'API d'événements, passez à la version actuelle.
Un moment de humour. Au cours de la préparation de la version 1.16, les changements suivants ont été apportés :
- suppression de l'annotation
scheduler.alpha.kubernetes.io/critical-poddans la version v1.16.0-alpha.1 - réintroduction de l'annotation
scheduler.alpha.kubernetes.io/critical-poddans la version v1.16.0-alpha.2 - suppression de l'annotation
scheduler.alpha.kubernetes.io/critical-poddans la version v1.16.0-beta.1
Utilisez le champ spec.priorityClassName pour indiquer l'importance du pod.
Source : habr.com
