Kubernetes 1.17: Highlights vun wat nei ass

Gëschter, den 9. Dezember, stattfonnt huet nächst Verëffentlechung vu Kubernetes - 1.17. No der Traditioun, déi fir eise Blog entwéckelt huet, schwätze mir iwwer déi bedeitendst Ännerungen an der neier Versioun.

Kubernetes 1.17: Highlights vun wat nei ass

D'Informatioun benotzt fir dëst Material ze preparéieren ass aus der offizieller Ukënnegung geholl, Kubernetes Verbesserunge Tracking Dëscher, CHANGELOG-1.17 a verbonne Themen, Pull Ufroen, a Kubernetes Enhancement Proposals (KEP). Also, wat ass nei? ..

Topologie-bewosst Routing

D'Kubernetes Gemeinschaft huet fir eng laang Zäit op dës Feature gewaart - Topologie-bewosst Service Routing. Wann KEPP et staamt am Oktober 2018, an déi offiziell Verbesserung - Virun 2 Joer, déi üblech Problemer (wéi et) - an e puer Joer méi al ...

Déi allgemeng Iddi ass d'Fäegkeet ze bidden "lokal" Routing fir Servicer, déi zu Kubernetes wunnen, ëmzesetzen. "Lokalitéit" heescht an dësem Fall "deeselwechten topologeschen Niveau" (Topologie Niveau), wat kann sinn:

  • Node identesch fir Servicer,
  • deeselwechte Server Rack,
  • déi selwecht Regioun
  • dee selwechte Cloud Provider,
  • ...

Beispiller fir dës Feature ze benotzen:

  • spueren op Verkéier an Wollek Installatiounen mat MÉI Disponibilitéit Zonen (Multi-AZ) - gesinn. frësch Illustratioun benotzt d'Beispill vum Verkéier aus der selwechter Regioun, awer verschidden AZ an AWS;
  • manner Leeschtungslatenz / besseren Duerchgang;
  • e sharded Service deen lokal Informatioun iwwer den Node an all Shard huet;
  • Plazéierung vu fléissend (oder Analoga) op deeselwechten Node mat den Uwendungen deenen hir Logbicher gesammelt ginn;
  • ...

Esou Routing, deen iwwer d'Topologie "kennt", gëtt och Netzwierkaffinitéit genannt - Analogie mat Node Affinitéit, pod Affinitéit / Anti-Affinitéit oder opgetaucht net esou laang virun Topologie-bewosst Volume Scheduling (an Volumen Versuergung). Aktuellen Niveau vun der Ëmsetzung ServiceTopology an Kubernetes - Alpha Versioun.

Fir Detailer iwwer wéi d'Feature funktionnéiert a wéi Dir se scho benotze kënnt, liest dësen Artikel vun engem vun den Auteuren.

IPv4 / IPv6 Dual Stack Ënnerstëtzung

Bedeitend Fortschrëtter befestegt an enger anerer Reseau Fonktioun: simultan Ënnerstëtzung fir zwee IP stacks, déi éischt agefouert an K8s 1.16. Besonnesch déi nei Verëffentlechung huet déi folgend Ännerungen bruecht:

  • am Kube-Proxy ëmgesat Méiglechkeet vu gläichzäiteg Operatioun a béide Modi (IPv4 an IPv6);
  • в Pod.Status.PodIPs erschéngt Ënnerstëtzung fir Downward API (gläichzäiteg wéi an /etc/hosts elo erfuerdert de Host fir eng IPv6 Adress ze addéieren);
  • duebel Stack Ënnerstëtzung KIND (Kubernetes IN Docker) an kubeadm;
  • aktualiséiert e2e Tester.

Kubernetes 1.17: Highlights vun wat nei ass
Illustration benotzt duebel Stack IPV4 / IPv6 an KIND

Fortschrëtter op CSI

Stabil deklaréiert Topologie Ënnerstëtzung fir CSI-baséiert Stockage, éischt agefouert an K8s 1.12.

Initiativ fir Migratioun vu Volumen Plugins op CSI - CSI Migratioun - erreecht Beta Versioun. Dës Feature ass kritesch fir existent Späichere Plugins ze iwwersetzen (an-baum) zu engem modernen Interface (CSI, out-of-tree) onsichtbar fir Kubernetes Endbenotzer. Cluster Administrateuren brauchen nëmmen d'CSI Migratioun z'aktivéieren, no deenen existéierend statesch Ressourcen an Aarbechtslaascht weider "just schaffen" ... awer déi lescht CSI Treiber benotzen anstatt déi al déi am Kubernetes Kär abegraff sinn.

Am Moment ass d'Migratioun fir AWS EBS Treiber prett an der Beta Versioun (kubernetes.io/aws-ebs) an GCE PD (kubernetes.io/gce-pd). Prognosen fir aner Späicheranlagen si wéi follegt:

Kubernetes 1.17: Highlights vun wat nei ass

Mir hunn geschwat wéi "traditionell" Späichersupport a K8s op CSI koum dësen Artikel. An den Iwwergank vun der CSI Migratioun op Beta Status ass gewidmet separat Publikatioun op de Projet Blog.

Zousätzlech ass eng aner bedeitend Funktionalitéit am Kontext vum CSI, déi staamt (Alpha-Implementatioun) an K1.17s 8, erreecht Beta Status (dh als Standard aktivéiert) an der Kubernetes 1.12 Verëffentlechung - Snapshots erstellen an Erhuelung vun hinnen. Ënnert den Ännerunge gemaach fir Kubernetes Volume Snapshot um Wee fir d'Beta Verëffentlechung:

  • den CSI externen Snapshotter Sidecar an zwee Controller opzedeelen,
  • dobäi Geheimnis fir Läschen (läsche geheim) als Annotatioun zum Inhalt vun engem Volume Snapshot,
  • nei finalizer (Finalizer) fir ze verhënneren datt de Snapshot API Objet geläscht gëtt wann et verbleiwen Verbindungen sinn.

Zu der Zäit vun der Verëffentlechung 1.17 gëtt d'Feature vun dräi CSI Treiber ënnerstëtzt: GCE Persistent Disk CSI Driver, Portworx CSI Driver an NetApp Trident CSI Driver. Méi Detailer iwwer seng Ëmsetzung a Gebrauch fannt Dir an vun dëser Publikatioun op de Blog.

Cloud Provider Etiketten

Etiketten déi automatesch zougewisen un erstallt Noden a Bänn ofhängeg vum Cloud Provider benotzt, sinn a Kubernetes als Beta Versioun fir eng ganz laang Zäit verfügbar - zënter der Verëffentlechung vu K8s 1.2 (Abrëll 2016!). Gitt hir verbreet Notzung fir sou laang, Entwéckler decidéiert, datt et Zäit ass d'Funktioun stabil (GA) ze deklaréieren.

Dofir goufen se all deementspriechend ëmbenannt (no Topologie):

  • beta.kubernetes.io/instance-typenode.kubernetes.io/instance-type
  • failure-domain.beta.kubernetes.io/zonetopology.kubernetes.io/zone
  • failure-domain.beta.kubernetes.io/regiontopology.kubernetes.io/region

... awer nach ëmmer ënner hiren alen Nimm verfügbar sinn (fir Réckkompatibilitéit). All Administrateuren sinn awer recommandéiert op déi aktuell Etiketten ze wiesselen. Zesummenhang Dokumentatioun K8s gouf aktualiséiert.

Strukturéiert Ausgab vu kubeadm

Presentéiert an Alpha Versioun fir d'éischte Kéier strukturéiert Ausgab fir de Kubeadm Utility. Ënnerstëtzt Formater: JSON, YAML, Go Template.

Motivatioun fir dës Fonktioun ëmzesetzen (geméiss KEPP) ass:

Wärend Kubernetes manuell ofgesat kënne ginn, ass de de facto (wann net de jure) Standard fir dës Operatioun d'Kubeadm ze benotzen. Populär Systemmanagement Tools wéi Terraform vertrauen op kubeadm fir Kubernetes Deployment. Geplangte Verbesserunge vun der Cluster API enthalen e komponéierbare Package fir Kubernetes Bootstrapping mat kubeadm a Cloud-init.

Ouni strukturéiert Ausgab, och déi harmlos Ännerungen op den éischte Bléck kënnen Terraform, Cluster API an aner Software briechen, déi d'Resultater vu kubeadm benotzt.

Eis direkt Pläng enthalen Ënnerstëtzung (a Form vu strukturéierten Output) fir déi folgend kubeadm Kommandoen:

  • alpha certs
  • config images list
  • init
  • token create
  • token list
  • upgrade plan
  • version

Illustratioun vun enger JSON Äntwert op e Kommando kubeadm init -o json:

{
  "node0": "192.168.20.51:443",
  "caCrt": "sha256:1f40ff4bd1b854fb4a5cf5d2f38267a5ce5f89e34d34b0f62bf335d74eef91a3",
  "token": {
    "id":          "5ndzuu.ngie1sxkgielfpb1",
    "ttl":         "23h",
    "expires":     "2019-05-08T18:58:07Z",
    "usages":      [
      "authentication",
      "signing"
    ],
    "description": "The default bootstrap token generated by 'kubeadm init'.",
    "extraGroups": [
      "system:bootstrappers:kubeadm:default-node-token"
    ]
  },
  "raw": "Rm9yIHRoZSBhY3R1YWwgb3V0cHV0IG9mIHRoZSAia3ViZWFkbSBpbml0IiBjb21tYW5kLCBwbGVhc2Ugc2VlIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2FrdXR6LzdhNjg2ZGU1N2JmNDMzZjkyZjcxYjZmYjc3ZDRkOWJhI2ZpbGUta3ViZWFkbS1pbml0LW91dHB1dC1sb2c="
}

Stabiliséierung vun aneren Innovatiounen

Am Allgemengen ass d'Verëffentlechung vu Kubernetes 1.17 ënner dem Motto "Stabilitéit" Dëst gouf erliichtert vun der Tatsaach, datt vill Funktiounen an et (hir Gesamtzuel ass 14) krut GA Status. Ënnert hinnen:

Aner Ännerungen

Déi komplett Lëscht vun Innovatiounen am Kubernetes 1.17 ass natierlech net limitéiert op déi hei uewen opgezielt. Hei sinn e puer anerer (a fir eng méi komplett Lëscht, kuckt CHANGELOG):

  • D'Feature presentéiert an der leschter Verëffentlechung huet d'Beta Versioun erreecht RunAsUserName fir Fënsteren;
  • ähnlech Ännerung gefall EndpointSlice API (och vu K8s 1.16), awer fir de Moment ass dës Léisung fir d'Performance / Skalierbarkeet vun der Endpoint API ze verbesseren net als Standard aktivéiert;
  • Pods sinn elo kritesch fir Cluster Operatioun kënne geschaf ginn net nëmmen an Nummraim kube-system (fir Detailer, kuckt d'Dokumentatioun fir Limitéiert Prioritéit Klass Konsum);
  • nei Optioun fir Kubelet - --reserved-cpus - erlaabt Iech explizit d'Lëscht vun CPUs reservéiert fir de System ze definéieren;
  • fir kubectl logs presentéiert neie Fändel --prefix, den Numm vum Pod a Quellbehälter op all Zeil vum Log ze addéieren;
  • в label.Selector dobäi RequiresExactMatch;
  • all Behälter an kube-dns lafen elo mat manner Privilegien;
  • hyperkube getrennt an e getrennten GitHub Repository a wäert net méi a Kubernetes Verëffentlechungen abegraff sinn;
  • vill verbessert Leeschtung kube-Proxy fir Net-UDP Häfen.

Ofhängegkeet Ännerungen:

  • CoreDNS Versioun abegraff am kubeadm ass 1.6.5;
  • crictl Versioun aktualiséiert ze v1.16.1;
  • CSI 1.2.0;
  • etcd 3.4.3;
  • Déi lescht getest Docker Versioun aktualiséiert op 19.03;
  • De Minimum Go Versioun erfuerderlech fir Kubernetes 1.17 ze bauen ass 1.13.4.

PS

Liest och op eisem Blog:

Source: will.com

Setzt e Commentaire