Kubernetes 1.17. հիմնական նորամուծությունների ակնարկ
Երեկ՝ դեկտեմբերի 9-ին, տեղի ունեցավ Kubernetes-ի հաջորդ թողարկումը՝ 1.17. Մեր բլոգի համար ձևավորված ավանդույթի համաձայն՝ մենք խոսում ենք նոր տարբերակի ամենաէական փոփոխությունների մասին։
Այս նյութը պատրաստելու համար օգտագործված տեղեկատվությունը վերցված է պաշտոնական հայտարարությունից, Kubernetes բարելավումների հետագծման աղյուսակներ, ՓՈՓՈԽՈՒԹՅՈՒՆ-1.17 և հարակից հարցեր, ձգողականության հարցումներ և Kubernetes-ի ընդլայնման առաջարկներ (KEP): Այսպիսով, ինչ նորություն կա:
Տոպոլոգիայի մասին տեղեկացված երթուղի
Kubernetes համայնքը երկար ժամանակ սպասում էր այս հատկությանը. Տոպոլոգիայի մասին տեղեկացված ծառայության երթուղավորում. Եթե KEP այն ծագում է 2018 թվականի հոկտեմբերին, իսկ պաշտոն ուժեղացում — 2 տարի առաջ սովորական հարցեր (նման այն) - Եվ ևս մի քանի տարի մեծ ...
Ընդհանուր գաղափարը Կուբերնետեսում բնակվող ծառայությունների համար «տեղական» երթուղավորում իրականացնելու հնարավորություն տալն է: «Տեղայնություն» այս դեպքում նշանակում է «նույն տոպոլոգիական մակարդակը». (տոպոլոգիայի մակարդակ), որը կարող է լինել.
ծառայությունների համար նույնական հանգույց,
նույն սերվերի դարակը,
նույն տարածաշրջանը
նույն ամպային մատակարարը,
...
Այս հատկության օգտագործման օրինակներ.
խնայողություններ երթևեկության վրա ամպային կայանքներում բազմաթիվ հասանելիության գոտիներով (բազմաթիվ-AZ) - տես. թարմ նկարազարդում օգտագործելով նույն տարածաշրջանից տրաֆիկի օրինակը, բայց տարբեր AZ-ներ AWS-ում.
ցածր կատարողական ուշացում / ավելի լավ թողունակություն;
մասնատված ծառայություն, որն ունի տեղական տեղեկատվություն յուրաքանչյուր բեկորի հանգույցի մասին.
fluentd-ի (կամ անալոգների) տեղադրումը նույն հանգույցի վրա այն հավելվածների հետ, որոնց տեղեկամատյանները հավաքվում են.
Մանրամասների համար, թե ինչպես է գործում հատկանիշը և ինչպես կարող եք արդեն օգտագործել այն, կարդացեք այս հոդվածը հեղինակներից մեկից։
IPv4/IPv6 երկակի կույտի աջակցություն
Զգալի առաջընթաց ձայնագրվել է ցանցի մեկ այլ հատկանիշում՝ միաժամանակյա աջակցություն երկու IP կույտերի համար, որն առաջին անգամ ներդրվեց K8s 1.16. Մասնավորապես, նոր թողարկումը բերեց հետևյալ փոփոխությունները.
kube-proxy-ում իրականացվել է միաժամանակյա աշխատանքի հնարավորություն երկու ռեժիմներում (IPv4 և IPv6);
в Pod.Status.PodIPsհայտնվեց աջակցություն ներքև API-ին (միևնույն ժամանակ, ինչպես նաև /etc/hosts այժմ նրանք պահանջում են հյուրընկալողից ավելացնել IPv6 հասցե);
կրկնակի կույտի աջակցություն ԿԻՆԴ (Kubernetes IN Docker) և kubeadm;
թարմացված e2e թեստեր:
Նկարազարդում օգտագործելով երկակի կույտ IPV4/IPv6 KIND-ում
Նախաձեռնություն համար ծավալային պլագինների միգրացիա դեպի CSI - ՔՀԻ միգրացիա - հասել է բետա տարբերակին: Այս հատկությունը չափազանց կարևոր է գոյություն ունեցող պահեստային հավելվածները թարգմանելու համար (ծառի մեջ) դեպի ժամանակակից ինտերֆեյս (CSI, ծառից դուրս) անտեսանելի Kubernetes-ի վերջնական օգտագործողների համար: Կլաստերի ադմինիստրատորներին միայն պետք է միացնեն CSI Միգրացիան, որից հետո գոյություն ունեցող պետական ռեսուրսները և աշխատանքային ծանրաբեռնվածությունը կշարունակեն «պարզապես աշխատել»... բայց օգտագործելով վերջին CSI դրայվերները՝ Kubernetes-ի միջուկում ներառված հնացածների փոխարեն:
Այս պահին AWS EBS վարորդների միգրացիան պատրաստ է բետա տարբերակով (kubernetes.io/aws-ebs) և GCE PD (kubernetes.io/gce-pd) Այլ պահեստային օբյեկտների կանխատեսումները հետևյալն են.
Մենք խոսեցինք այն մասին, թե ինչպես է «ավանդական» պահեստավորման աջակցությունը K8-ում հայտնվել CSI-ում այս հոդվածը. Իսկ CSI միգրացիայի անցումը բետա կարգավիճակին նվիրված է առանձին հրապարակում նախագծի բլոգում։
Բացի այդ, մեկ այլ նշանակալի գործառույթ CSI-ի համատեքստում, որը ծագում է (ալֆա իրականացում) K1.17s 8-ում, հասել է բետա կարգավիճակի (այսինքն՝ միացված է լռելյայն) Kubernetes 1.12 թողարկումում. նկարների ստեղծում և նրանցից վերականգնում. Բետա թողարկման ճանապարհին Kubernetes Volume Snapshot-ում կատարված փոփոխություններից.
CSI արտաքին լուսանկարչական կողային սայլը բաժանելով երկու կարգավորիչների,
ավելացված գաղտնիք ջնջման համար (ջնջման գաղտնիք) որպես ծավալի նկարի բովանդակության անոտացիա,
նոր վերջնականացուցիչ (եզրափակիչ) կանխելու snapshot API օբյեկտի ջնջումը, եթե մնացյալ կապեր կան:
1.17 թողարկման պահին ֆունկցիան աջակցվում է երեք CSI վարորդների կողմից՝ GCE Persistent Disk CSI Driver, Portworx CSI Driver և NetApp Trident CSI Driver: Դրա իրականացման և օգտագործման մասին ավելի շատ մանրամասներ կարելի է գտնել այստեղ այս հրապարակումը բլոգում։
Cloud Provider Labels
Պիտակներ, որոնք ավտոմատ կերպով նշանակված է ստեղծված հանգույցներին և ծավալներին՝ կախված օգտագործվող ամպային մատակարարից, հասանելի են Kubernetes-ում որպես բետա տարբերակ շատ երկար ժամանակ՝ K8s 1.2-ի թողարկումից ի վեր։ (ապրիլ 2016!). Հաշվի առնելով դրանց լայն տարածումը այսքան երկար ժամանակ, մշակողները որոշեց, որ ժամանակն է հայտարարելու հատկանիշը կայուն (GA):
Հետևաբար, դրանք բոլորը վերանվանվել են համապատասխանաբար (ըստ տոպոլոգիայի).
... բայց դեռ հասանելի են իրենց հին անուններով (հետադարձ համատեղելիության համար): Այնուամենայնիվ, բոլոր ադմինիստրատորներին խորհուրդ է տրվում անցնել ընթացիկ պիտակների: Առնչվող փաստաթղթեր K8-ը թարմացվել է:
Չնայած Kubernetes-ը կարող է ձեռքով գործարկվել, այս գործողության դե ֆակտո (եթե ոչ դե յուրե) ստանդարտը kubeadm-ի օգտագործումն է: Համակարգերի կառավարման հանրահայտ գործիքները, ինչպիսին Terraform-ն է, ապավինում են kubeadm-ին Kubernetes-ի տեղակայման համար: Կլաստերի API-ի ծրագրված բարելավումները ներառում են Kubernetes-ի բեռնաթափման համար նախատեսված փաթեթ՝ kubeadm-ով և cloud-init-ով:
Առանց կառուցվածքային արդյունքի, նույնիսկ ամենաանվնաս փոփոխություններն առաջին հայացքից կարող են կոտրել Terraform-ը, Cluster API-ն և այլ ծրագրեր, որոնք օգտագործում են kubeadm-ի արդյունքները:
Մեր անմիջական ծրագրերը ներառում են աջակցություն (կառուցված արդյունքի տեսքով) հետևյալ kubeadm հրամանների համար.
Ընդհանուր առմամբ, Kubernetes 1.17-ի թողարկումը տեղի ունեցավ նշանաբանի ներքո.Կայունություն« Դրան նպաստեց այն փաստը, որ դրանում առկա են բազմաթիվ առանձնահատկություններ (դրանց ընդհանուր թիվը 14) ստացել է ԳԱ կարգավիճակ: Նրանց մեջ:
Դիտեք էջանիշները - իրադարձությունների նոր տեսակ, որոնք ունեն պիտակ, որ բոլոր օբյեկտները համապատասխանում են որոշակի տարբերակին (resourceVersion) արդեն մշակվել են ժամացույցով.
«Ֆինալիզատորի պաշտպանություն» (Վերջնական պաշտպանություն) բեռի հավասարակշռողների համար (ստուգելով համապատասխան ծառայության ռեսուրսները՝ նախքան LoadBalancer ռեսուրսները ջնջելը);
kube-apiserver օպտիմիզացում մի քանի ժամացույցների հետ աշխատելիս՝ օբյեկտների միանման հավաքածուների մոնիտորինգի ժամանակ, որը ձեռք է բերվում յուրաքանչյուր դիտողի համար նույն առարկաների կրկնվող սերիականացումից խուսափելու միջոցով:
Այլ փոփոխություններ
Kubernetes 1.17-ի նորարարությունների ամբողջական ցանկը, իհարկե, չի սահմանափակվում վերը թվարկվածներով: Ահա ևս մի քանիսը (և ավելի ամբողջական ցանկի համար տե՛ս ԸՆԿԵՐՈՒԹՅՈՒՆ):
նմանատիպ փոփոխություն պատահեց EndpointSlice API (նաև K8s 1.16-ից), սակայն առայժմ այս լուծումը, որը բարելավելու է Endpoint API-ի կատարողականությունը/ճշտականությունը, լռելյայն միացված չէ.