 Kubernetes 1.11
Kubernetes 1.11 wurde am 
Mittwoch veröffentlicht . Wir setzen unsere Tradition fort und sprechen über die wichtigsten Änderungen, basierend auf Daten aus 
CHANGELOG-1.11 und zahlreichen Themen, Pull-Anfragen und Designvorschlägen. Was ist neu in K8s 1.11? 
Netzwerke
Beginnen wir mit den Netzwerken, da die Ankündigung von Kubernetes 1.11 die offizielle Stabilisierung 
(d. H. Die Übertragung auf den Status "Allgemeine Verfügbarkeit") von zwei wichtigen Innovationen markierte 
, die in früheren Versionen vorgestellt wurden. Die erste davon ist der 
Lastausgleich von Diensten innerhalb des Clusters basierend 
auf IPVS (IP Virtual Server). Diese 
Gelegenheit kam von 
Huawei , das im vergangenen Frühjahr der Community die Ergebnisse seiner Arbeit zur Verbesserung des Lastausgleichs für mehr als 50.000 Dienste mit IPVS anstelle von iptables vorstellte. Diese Auswahl 
wurde ganz logisch 
erklärt : „Wenn iptables für Firewalls erstellt werden und auf Regellisten im Kernel basieren, ist IPVS für den Lastausgleich ausgelegt und basiert auf Hash-Tabellen im Kernel. Darüber hinaus unterstützt IPVS erweiterte Algorithmen für den Lastausgleich als iptables sowie eine Reihe weiterer nützlicher Funktionen (z. B. Statusprüfung, Wiederholungsversuche usw.). "
 Schieben Sie von Huaweis Scaling Kubernetes zur Unterstützung der Präsentation von 50.000 Diensten auf der KubeCon Europe 2017
Schieben Sie von Huaweis Scaling Kubernetes zur Unterstützung der Präsentation von 50.000 Diensten auf der KubeCon Europe 2017Was hat es in die Praxis gebracht? „Bessere Netzwerkbandbreite, geringere Softwarelatenz 
[über die Zeit, die benötigt wird, um neue Endpunkte zu Diensten hinzuzufügen - ca. perev. ] und bessere Skalierbarkeit für den Load Balancer im Cluster. " Die Alpha-Version des IPVS-Modus für kube-proxy wurde in 
Kubernetes 1.8 veröffentlicht und ist mit der aktuellen Version 1.11 stabil geworden: Obwohl sie standardmäßig noch nicht aktiviert ist, ist sie bereits offiziell bereit, den Datenverkehr in Produktionsclustern zu bedienen.
Die zweite ausgereifte Funktion ist 
CoreDNS als DNS-Server, der vom Kubernetes-Cluster verwendet wird. Wir haben in einem 
separaten Test mehr über diese Lösung geschrieben. Kurz gesagt, es handelt sich um einen flexiblen und leicht erweiterbaren DNS-Server, der ursprünglich auf dem 
Caddy- Webserver basiert und zum Nachfolger von 
SkyDNS wurde (übrigens basiert auch kube-dns selbst darauf ersetzt durch CoreDNS) , geschrieben in Go und konzentriert sich auf die Welt der Cloud-Anwendungen (Cloud Native). Ein weiteres bemerkenswertes CoreDNS ist die Tatsache, dass es die einzige ausführbare Datei und der einzige Prozess im System zu sein scheint. Dies ist nicht nur eine weitere DNS-Option für den Kubernetes-Cluster, sondern auch die Standardoption für 
kubeadm . Anweisungen zur Verwendung von CoreDNS in Kubernetes finden Sie 
hier (und für Cluster Federation 
hier ).
Unter anderen Updates im Kubernetes-Netzwerk "Welt":
- In NetworkPolicies ist es jetzt möglich, bestimmte Subas in anderen Namespaces mit namespaceSelectorundpodSelector.
- Dienste können jetzt dieselben Host-Ports auf verschiedenen Schnittstellen --nodeport-addresses(angegeben in--nodeport-addresses).
- Es wurde ein Fehler behoben, aufgrund dessen Kubelet bei Verwendung von --node-ipdie Meldung vonExternalDNS,InternalDNSundExternalIP.
Lagereinrichtungen
In 
Kubernetes 1.9 eingeführt, wird die Funktion zum Schutz vor dem Entfernen von PVCs ( 
PersistentVolumeClaims ), die von Pods und PVs ( 
PersistentVolumes ) verwendet werden, die an PVCs gebunden sind, später 
(in K8s 1.10) als 
StorageProtection bezeichnet , als stabil deklariert.
Die Möglichkeit , die Größe des Volumens (PVs) nach dem Neustart des Herdes zu ändern, wurde in den Beta-Status übersetzt, und innerhalb der Alpha-Version ist die 
Größenänderung des Volumens in Echtzeit verfügbar geworden, d. H. ohne dass der Herd neu gestartet werden muss.
Zur Unterstützung von AWS EBS und GCE PD wurde das Limit für die maximal mögliche Anzahl von mit dem Host verbundenen Volumes erhöht, und in den Plug-Ins AWS EBS, Azure Disk, GCE PD und Ceph RBD wurde 
die Unterstützung für dynamische Bereitstellungsvolumes von Block-Raw-Geräten implementiert. Für AWS EBS-Volumes 
wurde auch die Möglichkeit 
hinzugefügt, Pods im 
ReadOnly Modus zu verwenden.
Darüber hinaus führte Kubernetes 1.11 eine Alpha-Version der 
Unterstützung für dynamische Begrenzungen von Volumes in Abhängigkeit vom Knotentyp sowie API-Unterstützung für Block-Volumes in externen Speichertreibern CSI ( 
Container Storage Interface - in 
Kubernetes 1.9 veröffentlicht ) ein. Darüber hinaus 
implementierte CSI 
die Integration in die neue 
Kubelet- Plugin-Registrierungs- 
Engine .
Clusterknoten
Zu den fünf wichtigsten Änderungen an der Version Kubernetes 1.11 gehört auch der 
Übergang zum Status einer Beta-Version der dynamischen Kubelet- Konfiguration , die erstmals in 
K8s 1.8 veröffentlicht wurde und mehrere Änderungen erfordert (Sie können sie im 
ursprünglichen Ticket für die 
dynamische Kubelet-Konfiguration nachverfolgen ). Mit dieser Funktion können neue 
Kubelet- Konfigurationen in 
aktiven , funktionierenden Clustern eingeführt werden (im Gegensatz zur vorherigen Situation, in der Einstellungen für 
Kubelet über Befehlszeilenflags 
übergeben wurden). Um es zu verwenden, müssen Sie die Option 
--dynamic-config-dir festlegen (wenn 
Kubelet startet).
Das 
Cri-Tools- Projekt wurde für stabil erklärt. Es bietet Tools für Systemadministratoren, mit denen Sie den Betrieb von Knoten in der Produktion unabhängig von der verwendeten Containerlaufzeit analysieren und debuggen können. Pakete damit ( 
crictl ) werden jetzt mit den restlichen 
kubeadm- Dienstprogrammen (in den Formaten DEB und RPM) ausgeliefert. 
Wir crictl in einem kürzlich erschienenen Artikel über die Integration von Containerd in Kubernetes mehr über den Zweck und die Fähigkeiten von crictl und damit den "traditionellen" Docker ersetzt. Beispiele für die Verwendung von
Beispiele für die Verwendung von crictl aus der ProjektdokumentationDie experimentelle 
Unterstützung für sysctls unter Linux 
wurde in den Beta-Status 
konvertiert (standardmäßig mithilfe des 
Sysctls Feature-Flags 
Sysctls ). 
PodSecurityPolicy und 
Pod Objekte verfügen über spezielle Felder zum Angeben / Steuern von 
Systemen .
Auch in 
ResourceQuota möglich, eine Prioritätsklasse anzugeben (in diesem Fall gilt das Kontingent nur für Pods mit dieser Klasse - Details siehe 
Designvorschläge ), und die 
ContainersReady Bedingung wurde dem Status des Pods 
hinzugefügt .
Rechte und Sicherheit
Die in K8s 1.9 eingeführte 
ClusterRole-Aggregationsfunktion , mit der Sie vorhandenen (einschließlich automatisch erstellten) Rollen 
Berechtigungen hinzufügen können, wird ohne Änderungen als stabil deklariert. Eine separate Rolle für Cluster-Autoscaler ( 
ClusterRole ) wurde ebenfalls 
hinzugefügt - sie wird anstelle des Systems ( 
Cluster-Administrator ) verwendet.
Eine Reihe von Arbeiten wurde in Richtung Transparenz darüber durchgeführt, was (und warum) innerhalb des Clusters geschieht. Insbesondere enthalten RBAC-Informationen in Überwachungsprotokollen jetzt 
zusätzliche Anmerkungen für Ereignisse :
- authorization.k8s.io/decision-- allowoder- forbid;
- authorization.k8s.io/reason- lesbarer Grund für die Entscheidung.
Außerdem wurden in den 
PodSecurityPolicy Informationen zum Zugriff von 
PodSecurityPolicy in Form von Anmerkungen 
podsecuritypolicy.admission.k8s.io/admit-policy und 
podsecuritypolicy.admission.k8s.io/validate-policy (welche Richtlinie ist zulässig?).
Konsolendienstprogramme
Viele (wenn auch nicht so wichtige, aber nützliche!) Verbesserungen werden in den Kubernetes CLI-Tools vorgestellt:
- Neuer kubectl waitBefehlkubectl waitauf den Momentkubectl waitin dem die angegebenen Ressourcen gelöscht werden oder eine bestimmte Bedingung erreicht ist.
- Neuer kubectl api-resourceszum Anzeigen von Ressourcen:
 
  
- Unterstützung für die kubectl cpVervollständigung vonkubectl cp.
- Die base64decode- Funktion ist in base64decodeGo-Vorlagen verfügbar geworden, deren Name für sich selbst spricht.
- Unterstützung für das --dry-runimkubectl patch.
- Das --match-server-versionglobal geworden - diekubectl versionwird es ebenfalls berücksichtigen.
- Die kubectl config view --minifyberücksichtigt jetzt das globalecontext.
- kubectl apply --pruneRessourcenunterstützung zu- kubectl apply --prune- CronJob.
Andere Änderungen
- Der Scheduler ( kube-scheduler ) hat gelernt, wie Pods in DaemonSet(Alpha-Version) geplant werden.
- Es ist möglich, eine bestimmte Systembenutzergruppe ( RunAsGroup) für Container im Herd anzugeben (Alpha-Version).
- Möglichkeit zum Entfernen von Waisen ( Orphan Delete ) für CustomResources.
- Verbesserungen in der Kubernetes-API-Unterstützung für Herde und Container unter Windows - Metriken für Herde, Container und ein Dateisystem mit Protokollen, Sicherheitskontexten run_as_user, lokalen konstanten Volumes und fstype für ein Azure-Laufwerk hinzugefügt.
- Azure bietet Unterstützung für den Standard-SKU-Load-Balancer und die öffentliche IP.
Kompatibilität
- Die unterstützte Version von etcd ist 3.2.18 (Kubernetes 1.10 war 3.1.12).
- Verifizierte Versionen von Docker - von 1.11.2 auf 1.13.1 und 17.03.x (wurden seit der Veröffentlichung von K8s 1.10 nicht geändert).
- Die Go- Version ist 1.10.2 (anstelle von 1.9.3), das unterstützte Minimum ist 1.9.1.
- Die CNI- Version ist 0.6.0.
- Die CSI- Version ist 0.3.0 (anstelle von 0.2.0).
PS
Lesen Sie auch in unserem Blog: