Kubernetes 1.14: Highlights vun wat nei ass

Kubernetes 1.14: Highlights vun wat nei ass

Dës Nuecht wäert stattfannen nächst Verëffentlechung vu Kubernetes - 1.14. No der Traditioun, déi fir eise Blog entwéckelt huet, schwätze mir iwwer d'Schlësselännerungen an der neier Versioun vun dësem wonnerschéinen Open Source Produkt.

Informatioun benotzt fir dëst Material ze preparéieren ass aus Kubernetes Verbesserunge Tracking Dëscher, CHANGELOG-1.14 a verbonne Themen, Pull-Ufroen, Kubernetes Enhancement Proposals (KEP).

Loosst eis mat enger wichteger Aféierung vum SIG Cluster-Lifecycle ufänken: dynamesch Failover Cluster Kubernetes (oder fir méi präzis ze sinn, selbst gehost HA Deployementer) ass elo kënne geschaf ginn benotzt vertraut (am Kontext vun Single-Node Cluster) Kommandoen kubeadm (init и join). Kuerz gesot, fir dëst:

  • Certificaten, déi vum Cluster benotzt ginn, ginn op Geheimnisser transferéiert;
  • fir d'Méiglechkeet den etcd Cluster am K8s Cluster ze benotzen (dh déi virdru existéierend extern Ofhängegkeet lass ze ginn) etcd-Operateur;
  • Dokumenter déi empfohlene Astellunge fir en externe Lastbalancer, deen eng Feelertolerant Konfiguratioun ubitt (an Zukunft ass et geplangt fir dës Ofhängegkeet ze eliminéieren, awer net op dëser Etapp).

Kubernetes 1.14: Highlights vun wat nei ass
Architektur vun engem Kubernetes HA Stärekoup erstallt mat kubeadm

Detailer vun der Ëmsetzung fannt Dir an Design Propositioun. Dës Fonktioun war wierklech laang-erwaarde: d'Alpha Versioun war erwaart zréck an K8s 1.9, awer erschéngen elo.

API

Equipe apply an allgemeng gesinn deklarativ Objektmanagement passéiert aus kubectl an apiserver. D'Entwéckler selwer erklären hir Entscheedung kuerz doduerch kubectl apply - e fundamentale Bestanddeel vun der Aarbecht mat Konfiguratiounen a Kubernetes, awer "et ass voller Käfere a schwéier ze fixéieren", an dofir muss dës Funktionalitéit zréck op normal bruecht ginn an op de Kontrollplang transferéiert ginn. Einfach a kloer Beispiller vu Probleemer déi haut existéieren:

Kubernetes 1.14: Highlights vun wat nei ass

Detailer iwwert d'Ëmsetzung sinn an KEPP. Aktuell Bereetschaft ass Alpha (Promotioun op Beta ass fir déi nächst Kubernetes Verëffentlechung geplangt).

Verfügbar an der Alpha Versioun Geleeënheet benotzt den OpenAPI v3 Schema fir Erstellt a publizéiert OpenAPI Dokumentatioun fir CustomResources (CR) benotzt fir ze validéieren (Server-Säit) K8s Benotzerdefinéiert Ressourcen (CustomResourceDefinition, CRD). OpenAPI fir CRD publizéieren erlaabt Clienten (z. kubectl) Leeschtunge Validatioun op Är Säit (bannent kubectl create и kubectl apply) an Dokumentatioun no dem Schema erausginn (kubectl explain). Detailer - an KEPP.

Pre-bestehend Logbicher sinn elo op mat Fändel O_APPEND (awer net O_TRUNC) fir Verloscht vu Logbicher an e puer Situatiounen ze vermeiden a fir d'Bequemlechkeet vun der Ofkierzung vu Logbicher mat externen Utilities fir Rotatioun.

Och am Kontext vun der Kubernetes API kann et bemierkt ginn datt an PodSandbox и PodSandboxStatus dobäi Gebitt runtime_handler Informatiounen iwwer opzehuelen RuntimeClass am Pod (liest méi doriwwer am Text iwwer Kubernetes 1.12 Verëffentlechung, wou dës Klass als Alpha Versioun opgetaucht ass), an am Admission Webhooks ëmgesat Fähegkeet ze bestëmmen déi Versiounen AdmissionReview si ënnerstëtzen. Endlech sinn d'Regele vum Admission Webhooks elo kann limitéiert ginn d'Ausmooss vun hirer Notzung duerch Nummraim a Cluster Kaderen.

Vëlker

PersistentLocalVolumes, deen de Beta-Status zënter der Verëffentlechung hat K8s 1.10, ugekënnegt stabil (GA): Dës Feature Gate ass net méi behënnert a gëtt a Kubernetes 1.17.

Geleeënheet benotzt Ëmwelt Verännerlechen genannt Downward API (zum Beispill, de Pod Numm) fir d'Nimm vun Verzeechnes montéiert als subPath, gouf entwéckelt - a Form vun engem neie Feld subPathExpr, deen elo benotzt gëtt fir de gewënschten Verzeichnisnumm ze bestëmmen. D'Feature erschéngt am Ufank am Kubernetes 1.11, awer fir 1.14 ass et am Alpha Versiounsstatus bliwwen.

Wéi mat der viregter Kubernetes Verëffentlechung, gi vill bedeitend Ännerunge fir den aktiv entwéckelende CSI (Container Storage Interface) agefouert:

CSI

Ginn verfügbar (als Deel vun der Alpha Versioun) ënnerstëtzen Gréisst änneren fir CSI Bänn. Fir et ze benotzen musst Dir d'Funktiounspaart aktivéieren ExpandCSIVolumes, wéi och d'Präsenz vun Ënnerstëtzung fir dës Operatioun an engem spezifesche CSI Chauffer.

Eng aner Feature fir CSI an der Alpha Versioun - Geleeënheet referéiert direkt (dh ouni PV / PVC ze benotzen) op CSI Bänn bannent der Pod Spezifizéierung. Dëst läscht d'Restriktioun op d'Benotzung vum CSI als exklusiv Remote Datelagerung, Dieren op d'Welt fir si opmaachen lokal ephemeral Bänn. Fir ze benotzen (Beispill aus Dokumentatioun) muss aktivéiert ginn CSIInlineVolume Fonktioun Gate.

Et gouf och Fortschrëtter an der "Internals" vu Kubernetes am Zesummenhang mat CSI, déi net sou siichtbar sinn fir Endbenotzer (Systemadministratoren) ... Am Moment sinn d'Entwéckler gezwongen zwou Versiounen vun all Späichere Plugin z'ënnerstëtzen: eng - "an der al Manéier", an der K8s Codebase (am -Bam), an déi zweet - als Deel vun der neier CSI (liest méi doriwwer, zum Beispill, an hei). Dëst verursaacht verständlech Onbequemlechkeeten déi musse behandelt ginn wéi CSI selwer stabiliséiert. Et ass net méiglech einfach d'API vun internen (in-tree) Plugins ofzeschafen wéinst relevant Kubernetes Politik.

All dëst huet zu der Tatsaach gefouert datt d'Alpha Versioun erreecht huet Migratioun Prozess intern Plugin Code, implementéiert als In-Baum, an CSI Plugins, duerch déi d'Suergen vun den Entwéckler reduzéiert ginn fir eng Versioun vun hire Plugins z'ënnerstëtzen, an d'Kompatibilitéit mat alen APIen bleift a si kënnen am üblechen Szenario als obsolet erkläert ginn. Et gëtt erwaart datt duerch déi nächst Verëffentlechung vu Kubernetes (1.15) all Cloud Provider Plugins migréiert ginn, d'Implementatioun kritt Beta Status a gëtt an K8s Installatiounen als Standard aktivéiert. Fir Detailer, kuckt Design Propositioun. Dës Migratioun huet och gefouert ze maachen vu Volumengrenzen definéiert vu spezifesche Cloud-Provider (AWS, Azure, GCE, Cinder).

Zousätzlech, Ënnerstëtzung fir Block Geräter mat CSI (CSIBlockVolume) iwwerdroen zu Beta Versioun.

Noden / Kubelet

Alpha Versioun presentéiert neien Endpunkt an Kubelet, entworf fir Retour Metriken op Schlëssel Ressourcen. Am allgemengen, wa virdrun Kubelet Statistike iwwer Containerverbrauch vu cAdvisor kritt huet, kommen elo dës Donnéeën aus dem Container Runtime Ëmfeld iwwer CRI (Container Runtime Interface), awer d'Kompatibilitéit fir mat eelere Versioune vum Docker ze schaffen ass och bewahrt. Virdru goufen Statistike gesammelt a Kubelet iwwer d'REST API geschéckt, awer elo en Endpunkt läit um /metrics/resource/v1alpha1. Laangfristeg Strategie vun Entwéckler ass ass de Set vu Metriken ze minimiséieren, déi vu Kubelet geliwwert ginn. Iwwregens, dës Metriken selwer elo ruffen se net "Kär Metriken", mee "Ressource Metriken", a ginn als "éischt Klass Ressourcen, wéi CPU, an Erënnerung" beschriwwen.

Eng ganz interessant Nuance: trotz dem kloere Leeschtungsvirdeel vum gRPC Endpunkt am Verglach mat verschiddene Fäll vum Prometheus Format (kuckt d'Resultat vun engem vun de Benchmarks hei ënnen), D'Auteuren hunn d'Textformat vum Prometheus bevorzugt wéinst der kloerer Leedung vun dësem Iwwerwaachungssystem an der Gemeinschaft.

"gRPC ass net kompatibel mat grousse Iwwerwaachungsleitungen. Endpoint wäert nëmme nëtzlech sinn fir Metriken op Metrics Server ze liwweren oder Komponenten ze iwwerwaachen déi direkt domat integréieren. Prometheus Textformat Leeschtung wann Dir Caching am Metric Server benotzt gutt genuch fir eis de Prometheus iwwer gRPC léiwer ze ginn, well déi verbreet Adoptioun vum Prometheus an der Gemeinschaft. Wann d'OpenMetrics Format méi stabil gëtt, kënne mir d'gRPC Leeschtung mat engem Proto-baséiert Format unzegoen.

Kubernetes 1.14: Highlights vun wat nei ass
Ee vun de vergläichende Leeschtungstester fir gRPC a Prometheus Formater am neie Kubelet Endpunkt fir Metriken ze benotzen. Méi Grafiken an aner Detailer fannt Dir an KEPP.

Ënner anerem Ännerungen:

  • Kubelet elo (eng Kéier) probéiert ze stoppen Container an engem onbekannte Staat virum Neistart a Läschen Operatiounen.
  • Wann Dir benotzt PodPresets elo an den Init Container bäigefüügt déi selwecht Informatioun wéi fir e normale Container.
  • kubelet ugefaang ze benotzen usageNanoCores vum CRI Statistik Provider, a fir Noden a Container op Windows dobäi Reseau Statistiken.
  • Betribssystem an Architekturinformatioun gëtt elo an Etiketten opgeholl kubernetes.io/os и kubernetes.io/arch Node Objete (vun Beta op GA iwwerdroen).
  • Fäegkeet fir eng spezifesch System Benotzergrupp fir Container an engem Pod ze spezifizéieren (RunAsGroup, erschéngt an K8s 1.11) fortgeschratt virun Beta (Standard aktivéiert).
  • du an fannen benotzt am cAdvisor, ersat op Go Ëmsetzung.

CLI

An cli-runtime an kubectl dobäigesat -k Fändel fir Integratioun mat personaliséiere (iwwregens gëtt seng Entwécklung elo an engem separaten Depot duerchgefouert), d.h. fir zousätzlech YAML Dateien aus speziellen Kutomiséierungsverzeichnungen ze veraarbecht (fir Detailer iwwer d'Benotzung, kuckt KEPP):

Kubernetes 1.14: Highlights vun wat nei ass
Beispill vun einfache Fichier Benotzen Personnalisatioun (eng méi komplex Uwendung vu Kustomize ass bannent méiglech Iwwerlagerungen)

Zousätzlech:

  • Dobäigesat nei Equipe kubectl create cronjob, deem säin Numm fir sech schwätzt.
  • В kubectl logs elo kënnt Dir kombinéieren Fändelen -f (--follow fir Streaming Logbicher) an -l (--selector fir Label Ufro).
  • kubectl geléiert Kopie Fichieren vun Wild Card ausgewielt.
  • An d'Equipe kubectl wait dobäi Fändel --all fir all Ressourcen am Nummraum vun der spezifizéierter Ressourcetyp ze wielen.

Aner

Déi folgend Fäegkeeten hu stabil (GA) Status kritt:

Aner Ännerungen agefouert an Kubernetes 1.14:

  • Standard RBAC Politik erlaabt net méi API Zougang discovery и access-review Benotzer ouni Authentifikatioun (net authentifizéiert).
  • Offiziell CoreDNS Ënnerstëtzung gesuergt Nëmmen Linux, also wann Dir Kubeadm benotzt fir et (CoreDNS) an engem Cluster z'installéieren, mussen Noden nëmmen op Linux lafen (NodeSelectors gi fir dës Begrenzung benotzt).
  • Standard CoreDNS Konfiguratioun ass elo benotzt viru Plugin amplaz Proxy. Och am CoreDNS dobäi ReadinessProbe, déi Belaaschtungsbalance op entspriechend (net prett fir Service) Pods verhënnert.
  • An kubeadm, op Phasen init oder upload-certs, méiglech gouf lued d'Zertifikater erfuerderlech fir den neie Kontrollfliger mat dem kubeadm-certs geheim ze verbannen (benotzt de Fändel --experimental-upload-certs).
  • Eng Alpha Versioun ass fir Windows Installatiounen opgetaucht ënnerstëtzen gMSA (Group Managed Service Account) - speziell Konten am Active Directory déi och vu Container benotzt kënne ginn.
  • Fir G.C.E. aktivéiert mTLS Verschlësselung tëscht etcd an kube-apiserver.
  • Aktualiséierungen a benotzt / ofhängeg Software: Go 1.12.1, CSI 1.1, CoreDNS 1.3.1, Docker 18.09 Ënnerstëtzung am kubeadm, an déi minimal ënnerstëtzt Docker API Versioun ass elo 1.26.

PS

Liest och op eisem Blog:

Source: will.com

Setzt e Commentaire