Eile, 9. detsember, vĂ€lja tuli uus Kubernetes'i versioon â 1.17. Meie blogi traditsioonide kohaselt rÀÀgime olulisematest muudatustest selles uuenduses.

KÀesoleva materjali koostamiseks kasutatud teave on saadud ametlikust teadaandest, , ning vastavatest probleemidest, tÔukeavaldustest ja Kubernetes'i tÀiustuse ettepanekutest (KEP). Nii et, mis on uut?..
Toptoloogia arvestusega suunamine
Kubernetes'i kogukonnas on selle funktsiooni jĂ€rele juba pikka aega oodatud â Topology-aware service routing. Kui mis algas 2018. aasta oktoobris, ja ametlik â 2 aastat tagasi, samas kui tavalised probleemid (nagu ) â on veel vanemadâŠ
Ăldine idee on pakkuda vĂ”imalust rakendada "kohalikku" suunamist Kubernetes'is asuvate teenuste jaoks. "Kohalikus" kontekstis tĂ€hendab see "samal topoloogilisel tasemel" (topology level), milleks vĂ”ib olla:
- samal sÔlmel teenused,
- sama serveririiul,
- sama piirkond,
- sama pilveteenuse pakkuja,
- âŠ
Sellise funktsiooni kasutamise nÀited:
- kulu kokkuhoid pilvepaigaldistes, kus on mitu kĂ€ttesaadavusala (multi-AZ) â vt. ĂŒhe piirkonna, kuid erinevate AZ-de kohta AWS-is;
- vÀiksemad latentsusprobleemid jÔudluses / parem lÀbilaskevÔime;
- jaotatud teenus, millel on kohaliku sÔlme teave igas shardis;
- fluentd (vĂ”i sarnaste) paigutamine ĂŒhe sĂ”lme juurde rakendustega, mille logisid kogutakse;
- âŠ
Seda topoloogia teadlikku suunamist nimetatakse sageli vĂ”rgu kĂŒlgetĂ”mbejĂ”uks â sarnaselt , vĂ”i hiljuti ilmunud (ja ServiceTopology Kubernetes'is â alfa versioon. KĂ€esolevas funktsiooni struktuuris ja selle kasutamisvĂ”imalustes saate lugeda
ĂŒhe autori poolt. Kahepoolsuse IPV4/IPV6 tugi
Oluline edusamm
on fikseeritud K8s 1.16 kube-proxy's
- vĂ”ime töötada samal ajal mĂ”lemas reĆŸiimis (IPv4 ja IPv6); Pod.Status.PodIPs
- ja
toetust downward API-le (samal ajal nĂ”uavad nad nĂŒĂŒd, et host lisaks ka IPv6-aadressi);toetust kahes kihis/etc/hosts(Kubernetes IN Docker) ja - uuendatud e2e-testide. (Kubernetes IN Docker) Đž ;
- ĐŸĐ±ĐœĐŸĐČĐ»ŃĐœĐœŃĐ” e2e-ŃĐ”ŃŃŃ.

kahekordse IPV4/IPv6 kasutamine KINDis
CSI edusammud
Kinnitatud stabiilseks CSI-pÔhiste salvestusruumide jaoks, mis esmakordselt tutvustati .
Algatus mahtpluginide migreerimisele CSI-le â on jĂ”udnud beetaversiooni. See funktsioon on kriitilise tĂ€htsusega olemasolevate salvestuspluginide viimiseks (in-tree) kaasaegsele liidesele (CSI, out-of-tree) Kubernetesi lĂ”ppkasutajatele mĂ€rkamatult. Klastri administraatoritel on piisav, et aktiveerida CSI migratsioon, pĂ€rast mida olemasolevad stateful-resursid ja töökoormused töötavad endiselt "lihtsalt"⊠kuid nĂŒĂŒd kaasaegsete CSI-draiveritega, mitte vananenud, tuuma Kubernetesesse kuuluvatega.
Beetaversioonis on nĂŒĂŒd saadaval migreerimine AWS EBS-draiveritele (kubernetes.io/aws-ebs) ja GCE PD (kubernetes.io/gce-pd). Muude salvestuslahenduste osas on prognoosid jĂ€rgmised:

Me rÀÀkisime, kuidas "traditsiooniline" salvestuslahenduste tugi K8s jÔudis CSI-le . CSI migratsiooni beetaversiooni siirdumist kÀsitleb projekti blogis.
Lisaks on Kubernetes 1.17 vĂ€ljaandes beetaversiooniks (st vaikimisi lubatud) jĂ”udnud teine olulise funktsionaalsus, mille algus (alfa-realiseerimine) on K8s 1.12, â ja nende taastamine. Kubernetes Volume Snapshotis beetaversiooni suunas tehtud muudatuste hulka kuulub:
- CSI external-snapshotteri sidecar'i jagamine kaheks kontrolleriks,
- lisatud eemaldamissekreti (deletion secret) salvestusmahu snapshot'i sisu annotatsioonina,
- uus finilisaator (finalizer) API-objekti snapshot'i eemaldamise vÀltimiseks, kui alles on jÀÀnud seoseid.
1.17 vÀljaande ajal toetatakse seda funktsionaalsust kolme CSI-draiveriga: GCE Persistent Disk CSI Driver, Portworx CSI Driver ja NetApp Trident CSI Driver. Selle rakendamise ja kasutamise kohta saab rohkem lugeda blogis.
Cloud Provider Labels
Sildid, mis mÀÀratakse automaatselt loodud sĂ”lmedele ja mahtudele sĂ”ltuvalt kasutatavast pilvteenuse pakkujast, on Kuberneteses juba pikka aega beetaversioonina saadaval â alates K8s 1.2 vĂ€ljaandest (aprill 2016!). Arvestades nende laialdast kasutamist nii kaua, on arendajad , et on aeg kuulutada funktsioon stabiilseks (GA).
SeetĂ”ttu on kĂ”ik need ĂŒmber nimetatud vastavalt (topoloogiate jĂ€rgi):
-
beta.kubernetes.io/instance-typeânode.kubernetes.io/instance-type -
failure-domain.beta.kubernetes.io/zoneâtopology.kubernetes.io/zone -
failure-domain.beta.kubernetes.io/regionâtopology.kubernetes.io/region
⊠kuid siiski on nad kergesti kĂ€ttesaadavad ka oma vanade nimede kaudu (tagasiĂŒhilduvuse huvides). Siiski soovitatakse kĂ”igil administraatoritel minna ĂŒle praegustele siltidele. K8s on uuendatud.
Kubeadm struktuurne vÀljund
Alfa versioonis tutvustati esmakordselt . Toetatud formaadid: JSON, YAML, Go-mall.
Selle funktsiooni rakendamise motivatsioon (vastavalt ) on jÀrgmine:
Kuigi Kubernetes vĂ”ib olla kĂ€sitsi juurutatud, on de facto (kui mitte de jure) standard selle teostamiseks kubeadmâi kasutamine. Populaarsed sĂŒsteemihalduse tööriistad nagu Terraform toetuvad kubeadmâile Kubernetesâi juurutamiseks. Planeeritud tĂ€iustused Cluster API-sse hĂ”lmavad kubeadmâi ja cloud-initâi abil Kubernetesâi bootstrappimiseks mĂ”eldud kompakti paketti.
Ilma struktuurse vĂ€ljundita vĂ”ivad isegi kĂ”ige sĂŒĂŒtumad esmapilgul muudatused kahjustada Terraformâi, Cluster API-d ja muid tarkvarasid, mis kasutavad kubeadmâi vĂ€ljundit.
LĂ€hiajal on plaanis toetada (struktuurse vĂ€ljundina) jĂ€rgmisi kubeadmâi kĂ€sklusi:
-
alpha certs -
config images list -
â algne ettevalmistus enne juurutamist, siin vĂ”ib olla kĂ”ike: sĂ”ltuvuste allalaadimist, saladuste lahtipakkimist ja muud. -
token create -
token list -
upgrade plan -
version
JSON-vastuse illustreerimine kÀsule 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": "Kubeadm initâiga genereeritud vaikimisi bootstrapi token.",
"extraGroups": [
"system:bootstrappers:kubeadm:default-node-token"
]
},
"raw": "Rm9yIHRoZSBhY3R1YWwgb3V0cHV0IG9mIHRoZSAia3ViZWFkbSBpbml0IiBjb21tYW5kLCBwbGVhc2Ugc2VlIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2FrdXR6LzdhNjg2ZGU1N2JmNDMzZjkyZjcxYjZmYjc3ZDRkOWJhI2ZpbGUta3ViZWFkbS1pbml0LW91dHB1dC1sb2c="
}Muude uuenduste stabiilsus
Ăldiselt toimus Kubernetes 1.17 vĂ€ljaanne motoga «Stabiilsus». Sellele aitas kaasa asjaolu, et vĂ€ga paljud funktsioonid said GA staatuse (nende koguarv â 14) jĂ€rgmiste seas:
- Ehtetamine sÔlmede kindlate tingimuste alusel (), mis ilmus ;
- â uus sĂŒndmuste tĂŒĂŒp, millel on mĂ€rgistus, et kĂ”ik objektid kuni kindla versioonini (
resourceVersion) on juba vaatluse kÀigus töödeldud; - (defaulting) kohandatud ressursside jaoks;
- podâis protsessi nimed;
-
ScheduleDaemonSetPodsâ kube-schedulerâi abil (Daemoni Set kontrollija asemel); - mahtude arvu jaoks sĂ”ltuvalt sĂ”lme tĂŒĂŒbist;
- kaustade nimede jaoks, mis monteeritakse nagu
, said edasiarendust â uue vĂ€lja; - spetsialiseeritud Lease API-sse;
- «lÔpp- ning erandid» () koormuste tasandajatele (teenuse vastavate ressursside kontroll enne LoadBalancer'i ressursside eemaldamist);
- töös paljude watch'ide puhul, mis jÀlgivad identseid objektide kogumeid, - saavutatakse tÀnu sama objekti mitmekordse serialiseerimise vÀltimisele iga watch'i jaoks.
Muud muudatused
Kubernetes 1.17 tÀielik uuenduste nimekiri ei piirdu kindlasti eespooltoodud punktidega. Siin on mÔned muud neist (ja tÀielik nimekiri - vt. ):
- beta versiooniks «arendatud» eelmisel vÀljaandes esitatud funktsioon ;
- samalaadne muudatus EndpointSlice API (ka K8s 1.16-st), kuid praegu ei ole see lahendus Endpoint API jÔudluse / skaleeritavuse parandamiseks vaikimisi aktiveeritud;
- klastri töötamiseks kriitilised pod'id vĂ”ivad nĂŒĂŒd mitte ainult nimede ruumides
kubectl -n kube-system edit cm kubelet-config-1.16(detailid vt dokumentatsioonist ); - uus valik kubelet'i jaoks - â lubab selgelt mÀÀratleda CPU nimekirja, mis on sĂŒsteemile reserveeritud;
- jaoks
lipuduus lipp--prefix, lisades pod'i ja allika konteineri nime igale logireale; - ja
label.SelectorRequiresExactMatch; - kÔik kube-dns'i konteinerid madalamate privileegidega;
- on eraldi GitHub'i hoidlas, ei sisaldu enam Kubernetes'i vÀljalasemetes;
- oluliselt SÔltuvuste muudatused:
CoreDNS versioon kubeadm's - 1.6.5;
- crictl versioon on uuendatud v1.16.1-le;
- CSI 1.2.0;
- etcd 3.4.3;
- viimane kontrollitud Docker'i versioon on suurendatud 19.03-ni;
- minimaalne Go versioon, mis on vajalik Kubernetes 1.17 koostamiseks, on 1.13.4.
- Kubernetes 1.15: peamiste uuenduste ĂŒlevaade
P.S.
Lugege ka meie blogist:
- «»;
- «»;
- «»;
- «».
Allikas: habr.com
