Kubernetes 1.16 – So aktualisieren Sie, ohne dass etwas kaputt geht

Kubernetes 1.16 – So aktualisieren Sie, ohne dass etwas kaputt geht

Heute, am 18. September, wird die nächste Version von Kubernetes veröffentlicht – 1.16. Wie immer erwarten uns viele Verbesserungen und neue Produkte. Ich möchte Sie jedoch auf die Abschnitte mit den erforderlichen Maßnahmen in der Datei aufmerksam machen CHANGELOG-1.16.md. In diesen Abschnitten werden Änderungen veröffentlicht, die Ihre Anwendung oder Cluster-Wartungstools beschädigen oder Änderungen an Konfigurationsdateien erfordern können.

Im Allgemeinen erfordern sie einen manuellen Eingriff...

Beginnen wir gleich mit einer Änderung, die höchstwahrscheinlich jeden betreffen wird, der schon lange genug mit Kubernetes arbeitet. Die Kubernetes-API unterstützt keine älteren Ressourcen-API-Versionen mehr.

Falls es jemand nicht wusste oder vergessen hat...Die API-Version der Ressource wird im Manifest im Feld angegeben apiVersion: apps/v1

Diese sind:

Ressourcentyp
Alte Version
Wodurch soll ersetzt werden

Alle Ressourcen
apps/v1beta1
apps/v1beta2
Apps / v1

Implementierungen
Dämonensatz
Replikatsatz
Erweiterung/v1beta1
Apps / v1

Netzwerkrichtlinien
Erweiterungen/v1beta1
network.k8s.io/v1

Podsicherheitsrichtlinien
Erweiterungen/v1beta1
Policy/v1beta1

Ich möchte Sie auch darauf aufmerksam machen, dass Objekte des Typs Ingress auch geändert apiVersion auf networking.k8s.io/v1beta1. Alte Bedeutung extensions/v1beta1 wird weiterhin unterstützt, aber es gibt einen guten Grund, diese Version gleichzeitig in den Manifesten zu aktualisieren.

Es gibt eine ganze Reihe von Änderungen an verschiedenen Systemetiketten (Knotenetiketten), die auf Knoten installiert sind.

Kubelet war es untersagt, willkürliche Labels festzulegen (zuvor konnten sie über Starttasten festgelegt werden). kubelet --node-labels), haben sie nur diese Liste hinterlassen gestattet:

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

Stichworte beta.kubernetes.io/metadata-proxy-ready, beta.kubernetes.io/metadata-proxy-ready und beta.kubernetes.io/kube-proxy-ds-ready werden nicht mehr zu neuen Knoten hinzugefügt, und verschiedene zusätzliche Komponenten haben begonnen, leicht unterschiedliche Bezeichnungen als Knotenselektoren zu verwenden:

Komponente
Altes Etikett
Aktuelles Etikett

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

IP-Masken-Agent
beta.kubernetes.io/masq-agent-ds-ready
node.kubernetes.io/masq-agent-ds-ready

Metadaten-Proxy
beta.kubernetes.io/metadata-proxy-ready
cloud.google.com/metadata-proxy-ready

kubeadm entfernt jetzt die anfängliche Kublet-Konfigurationsdatei dahinter bootstrap-kubelet.conf. Wenn Ihre Tools auf diese Datei zugegriffen haben, wechseln Sie zu „using“. kubelet.conf, das die aktuellen Zugriffseinstellungen speichert.

Cadvisor stellt keine Metriken mehr bereit pod_name и container_nameWenn Sie sie in Prometheus verwendet haben, gehen Sie zu Metriken pod и container jeweils.

Die Schlüssel wurden mit dem Zeilenbefehl entfernt:

Komponente
Eingezogener Schlüssel

Hyperkube
--make-symlink

Kube-Proxy
--resource-container

Der Planer begann mit der Verwendung der Version v1beta1 der Event-API. Wenn Sie Tools von Drittanbietern verwenden, um mit der Event-API zu interagieren, wechseln Sie zur neuesten Version.

Ein Moment voller Humor. Während der Vorbereitung von Release 1.16 wurden folgende Änderungen vorgenommen:

  • habe die Anmerkung entfernt scheduler.alpha.kubernetes.io/critical-pod in Version v1.16.0-alpha.1
  • hat die Anmerkung zurückgegeben scheduler.alpha.kubernetes.io/critical-pod in Version v1.16.0-alpha.2
  • habe die Anmerkung entfernt scheduler.alpha.kubernetes.io/critical-pod in Version v1.16.0-beta.1

Benutzen Sie das Feld spec.priorityClassName um auf die Wichtigkeit des Pods hinzuweisen.

Source: habr.com

Kommentar hinzufügen