Tegnap, december 9-én került sor A Kubernetes következő kiadása - 1.17. A blogunkhoz kialakult hagyomány szerint az új verzióban a legjelentősebb változásokról beszélünk.
Az anyag elkészítéséhez felhasznált információk a hivatalos közleményből származnak, Kubernetes fejlesztések nyomkövetési táblái, VÁLTOZTATÁS-1.17 és a kapcsolódó problémák, lehívási kérések és Kubernetes fejlesztési javaslatok (KEP). Szóval mi újság?..
Topológia-tudatos útválasztás
A Kubernetes közösség már régóta vár erre a funkcióra - Topológia-tudatos szolgáltatás-útválasztás... Ha SAPKA 2018 októberéből származik, és a hivatalos fokozás — 2 évvel ezelőtt a szokásos kérdések (mint azt) - és még néhány évvel idősebb...
Az általános elképzelés az, hogy a Kubernetesben található szolgáltatások „helyi” útválasztásának megvalósítását biztosítsák. A „helység” ebben az esetben „ugyanolyan topológiai szintet” jelent. (topológia szint), ami lehet:
a szolgáltatásokhoz azonos csomópont,
ugyanaz a szerver rack,
ugyanaz a régió
ugyanaz a felhőszolgáltató,
...
Példák a funkció használatára:
forgalom megtakarítása több rendelkezésre állási zónával (multi-AZ) rendelkező felhőtelepítéseknél – lásd. friss illusztráció az azonos régióból származó forgalom példájával, de az AWS-ben különböző AZ-okkal;
alacsonyabb teljesítmény késleltetés/jobb áteresztőképesség;
egy megosztott szolgáltatás, amely minden egyes shardban helyi információkat tartalmaz a csomópontról;
a fluentd (vagy analógok) elhelyezése ugyanazon a csomóponton azokkal az alkalmazásokkal, amelyek naplóit gyűjtik;
A funkció működésével és használatának módjával kapcsolatos részletekért olvassa el ezt a cikket az egyik szerzőtől.
IPv4/IPv6 kettős verem támogatás
Jelentős előrelépés rögzített egy másik hálózati szolgáltatásban: két IP-verem egyidejű támogatása, amelyet először ben vezettek be K8s 1.16. Az új kiadás különösen a következő változásokat hozta magával:
kube-proxyban végrehajtva egyidejű működés lehetősége mindkét módban (IPv4 és IPv6);
в Pod.Status.PodIPsmegjelent a lefelé irányuló API támogatása (ugyanakkor /etc/hosts most megkövetelik a gazdagéptől egy IPv6-cím hozzáadását);
kettős verem támogatás KEDVES (Kubernetes IN Docker) és kubeadm;
Kezdeményezés a kötet-bővítmények migrációja CSI-re - CSI migráció - elérte a béta verziót. Ez a funkció kritikus fontosságú a meglévő tárolóbővítmények lefordításához (fában) egy modern felületre (CSI, fán kívüli) láthatatlan a Kubernetes végfelhasználók számára. A fürt adminisztrátorainak csak engedélyezniük kell a CSI-áttelepítést, ami után a meglévő állapotalapú erőforrások és munkaterhelések továbbra is „csak működnek”... de a Kubernetes magban lévő elavultok helyett a legújabb CSI-illesztőprogramokat használják.
Jelenleg az AWS EBS illesztőprogramok migrációja készen áll a béta verzióban (kubernetes.io/aws-ebs) és GCE PD (kubernetes.io/gce-pd). Az egyéb tárolóhelyekre vonatkozó előrejelzések a következők:
Beszélgettünk arról, hogy a K8s „hagyományos” tárolási támogatása hogyan került a CSI-be ezt a cikket. És a CSI-migráció béta állapotba való átállása a cél külön kiadvány a projekt blogján.
Ezenkívül a CSI kontextusában egy másik jelentős funkció, amely a K1.17s 8-ből származik (alfa implementáció), a Kubernetes 1.12 kiadásban elérte a béta állapotot (azaz alapértelmezés szerint engedélyezve van) pillanatképek készítése és gyógyulást belőlük. A Kubernetes Volume Snapshotban a bétaverzió megjelenése során végrehajtott módosítások között szerepel:
a CSI külső pillanatfelvételi oldalkocsi két vezérlőre osztása,
hozzáadva a törléshez szükséges titkot (titkos törlés) megjegyzésként egy kötet pillanatfelvétel tartalmához,
új véglegesítő (véglegesítő) hogy megakadályozza a pillanatkép API objektum törlését, ha vannak még kapcsolatok.
Az 1.17-es kiadás idején a funkciót három CSI-illesztőprogram támogatja: GCE Persistent Disk CSI Driver, Portworx CSI Driver és NetApp Trident CSI Driver. A megvalósításról és használatáról bővebben itt olvashat ez a kiadvány a blogon.
Felhőszolgáltató címkéi
Automatikusan felcímkézi hozzárendelve a létrehozott csomópontokhoz és kötetekhez a használt felhőszolgáltatótól függően, már nagyon régóta elérhetőek Kubernetesben béta verzióként - a K8s 1.2 megjelenése óta (2016. április!). Tekintettel arra, hogy olyan régóta széles körben használták őket, a fejlesztők határozott, hogy itt az ideje stabilnak (GA) nyilvánítani.
Ezért mindegyiket ennek megfelelően (topológia szerint) nevezték át:
... de továbbra is elérhetők a régi nevükön (a visszafelé kompatibilitás érdekében). Javasoljuk azonban, hogy minden rendszergazdának váltson az aktuális címkékre. Kapcsolódó dokumentáció A K8s frissítve lett.
A funkció megvalósításának motivációja (a szerint SAPKA) a következő:
Míg a Kubernetes manuálisan is telepíthető, a művelet de facto (ha nem de jure) szabványa a kubeadm használata. A népszerű rendszerkezelő eszközök, például a Terraform a kubeadm-re támaszkodnak a Kubernetes telepítéséhez. A Cluster API tervezett fejlesztései közé tartozik egy összeállítható csomag a Kubernetes rendszerindításhoz kubeadm és cloud-init segítségével.
Strukturált kimenet nélkül az első pillantásra a legártalmatlanabb változtatások is összetörhetik a Terraformot, a Cluster API-t és más olyan szoftvereket, amelyek a kubeadm eredményeit használják.
Közvetlen terveink között szerepel a következő kubeadm parancsok támogatása (strukturált kimenet formájában):
alpha certs
config images list
init
token create
token list
upgrade plan
version
Parancsra adott JSON-válasz illusztrációja kubeadm init -o json:
Általában a Kubernetes 1.17 kiadása a következő mottóval zajlottstabilitás" Ezt megkönnyítette az a tény, hogy sok funkció van benne (az összesített számuk 14) GA állapotot kapott. Közöttük:
Nézd meg a Könyvjelzőket - új típusú események, amelyek címkével rendelkeznek, hogy minden objektum egy bizonyos verzióig (resourceVersion) már feldolgozta őket az óra;
"véglegesítő védelem" (Véglegesítő védelem) a terheléselosztókhoz (a megfelelő szolgáltatási erőforrások ellenőrzése a LoadBalancer erőforrások törlése előtt);
kube-apiserver optimalizálás teljesítményben, ha több órával dolgozunk, azonos objektumkészleteket figyelünk meg – ez úgy érhető el, hogy elkerüljük ugyanazon objektumok ismételt sorozatosítását minden egyes megfigyelőnél.
Egyéb változások
A Kubernetes 1.17 innovációinak teljes listája természetesen nem korlátozódik a fent felsoroltakra. Íme néhány másik (és a teljesebb listát lásd VÁLTOZÁSI NAPLÓ):
hasonló változás történt EndpointSlice API (szintén a K8s 1.16-ból), azonban jelenleg ez a megoldás az Endpoint API teljesítményének/skálázhatóságának javítására alapértelmezés szerint nincs engedélyezve;