Kubernetes 1.16 - wie man ein Upgrade durchführt und nichts kaputt macht



Heute, am 18. September, wird die nächste Version von Kubernetes veröffentlicht - 1.16. Wie immer werden wir viele Verbesserungen und neue Produkte finden. Ich möchte Sie jedoch auf die Abschnitte der Datei "Aktion erforderlich" CHANGELOG-1.16.md aufmerksam machen . In diesen Abschnitten werden Änderungen veröffentlicht, die Ihre Anwendung beschädigen können, Cluster-Wartungstools oder Änderungen an Konfigurationsdateien erfordern.

Im Allgemeinen erfordern sie manuelle Eingriffe ...

Beginnen wir gleich mit einer Änderung, die wahrscheinlich alle betrifft, die schon seit einiger Zeit mit Kubernetes arbeiten. Die Kubernetes-API unterstützt keine älteren Versionen der Ressourcen-API mehr.

Wenn jemand es nicht wusste oder vergaß ...
Die Version der Ressourcen-API wird im Manifest im Feld apiVersion: apps/v1

Nämlich:
RessourcentypAlte VersionWas sollte ersetzt werden
Alle Ressourcenapps / v1beta1
apps / v1beta2
apps / v1
Bereitstellungen
Daemonset
Replikat
Erweiterungen / v1beta1apps / v1
NetzwerkrichtlinienErweiterungen / v1beta1network.k8s.io/v1
podsecuritypoliciesErweiterungen / v1beta1policy / v1beta1
Ich möchte auch darauf hinweisen, dass apiVersion für Objekte wie Ingress apiVersion geändert wurde. Der alte extensions/v1beta1 weiterhin unterstützt, aber es gibt einen guten Grund, diese Version gleichzeitig in Manifesten zu aktualisieren.

Es gibt viele Änderungen an verschiedenen Systembezeichnungen (Knotenbezeichnungen), die auf den Knoten installiert sind.

Kubelet war es verboten, beliebige Beschriftungen festzulegen (bevor sie über die kubelet --node-labels ). Sie ließen nur diese Liste der zulässigen :

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

Die Bezeichnungen beta.kubernetes.io/metadata-proxy-ready , beta.kubernetes.io/masq-agent-ds-ready und beta.kubernetes.io/kube-proxy-ds-ready nicht mehr zu neuen Knoten hinzugefügt, und verschiedene zusätzliche Komponenten verwendeten leicht unterschiedliche Bezeichnungen als Knotenselektor:
KomponenteAltes EtikettAktuelles Tag
kube-proxybeta.kubernetes.io/kube-proxy-ds-readynode.kubernetes.io/kube-proxy-ds-ready
IP-Masken-Agentbeta.kubernetes.io/masq-agent-ds-readynode.kubernetes.io/masq-agent-ds-ready
Metadaten-Proxybeta.kubernetes.io/metadata-proxy-readycloud.google.com/metadata-proxy-ready
kubeadm entfernt jetzt die anfängliche Konfigurationsdatei bootstrap-kubelet.conf . Wenn Ihre Tools auf diese Datei zugegriffen haben, wechseln Sie zur Verwendung von kubelet.conf , in der die aktuellen Zugriffseinstellungen kubelet.conf sind.

Cadvisor gibt die Metriken pod_name und container_name nicht mehr an. Wenn Sie sie in Prometheus verwendet haben, pod_name Sie zu den Metriken pod und container .

Die Schlüssel wurden über die Befehlszeile entfernt:
KomponenteSchlüssel entfernt
Hyperkube--make-symlink
kube-proxy--Ressourcencontainer
Sheduler begann mit der Verwendung der Ereignis-API der Version v1beta1. Wenn Sie Tools von Drittanbietern verwenden, um mit der Ereignis-API zu interagieren, wechseln Sie zur aktuellen Version.

Ein Moment des Humors. Bei der Vorbereitung von Release 1.16 wurden folgende Änderungen vorgenommen:

  • Annotation scheduler.alpha.kubernetes.io/critical-pod in Version v1.16.0-alpha.1 entfernt
  • gab annotation scheduler.alpha.kubernetes.io/critical-pod in Version v1.16.0-alpha.2 zurück
  • Annotation scheduler.alpha.kubernetes.io/critical-pod in Version v1.16.0-beta.1 entfernt

Verwenden Sie das Feld spec.priorityClassName , um die Wichtigkeit des Herdes anzugeben.

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


All Articles