Kubernetes 1.17. հիմնական նորամուծությունների ակնարկ

Երեկ՝ դեկտեմբերի 9-ին, տեղի ունեցավ Kubernetes-ի հաջորդ թողարկումը՝ 1.17. Մեր բլոգի համար ձևավորված ավանդույթի համաձայն՝ մենք խոսում ենք նոր տարբերակի ամենաէական փոփոխությունների մասին։

Kubernetes 1.17. հիմնական նորամուծությունների ակնարկ

Այս նյութը պատրաստելու համար օգտագործված տեղեկատվությունը վերցված է պաշտոնական հայտարարությունից, Kubernetes բարելավումների հետագծման աղյուսակներ, ՓՈՓՈԽՈՒԹՅՈՒՆ-1.17 և հարակից հարցեր, ձգողականության հարցումներ և Kubernetes-ի ընդլայնման առաջարկներ (KEP): Այսպիսով, ինչ նորություն կա:

Տոպոլոգիայի մասին տեղեկացված երթուղի

Kubernetes համայնքը երկար ժամանակ սպասում էր այս հատկությանը. Տոպոլոգիայի մասին տեղեկացված ծառայության երթուղավորում. Եթե KEP այն ծագում է 2018 թվականի հոկտեմբերին, իսկ պաշտոն ուժեղացում — 2 տարի առաջ սովորական հարցեր (նման այն) - Եվ ևս մի քանի տարի մեծ ...

Ընդհանուր գաղափարը Կուբերնետեսում բնակվող ծառայությունների համար «տեղական» երթուղավորում իրականացնելու հնարավորություն տալն է: «Տեղայնություն» այս դեպքում նշանակում է «նույն տոպոլոգիական մակարդակը». (տոպոլոգիայի մակարդակ), որը կարող է լինել.

  • ծառայությունների համար նույնական հանգույց,
  • նույն սերվերի դարակը,
  • նույն տարածաշրջանը
  • նույն ամպային մատակարարը,
  • ...

Այս հատկության օգտագործման օրինակներ.

  • խնայողություններ երթևեկության վրա ամպային կայանքներում բազմաթիվ հասանելիության գոտիներով (բազմաթիվ-AZ) - տես. թարմ նկարազարդում օգտագործելով նույն տարածաշրջանից տրաֆիկի օրինակը, բայց տարբեր AZ-ներ AWS-ում.
  • ցածր կատարողական ուշացում / ավելի լավ թողունակություն;
  • մասնատված ծառայություն, որն ունի տեղական տեղեկատվություն յուրաքանչյուր բեկորի հանգույցի մասին.
  • fluentd-ի (կամ անալոգների) տեղադրումը նույն հանգույցի վրա այն հավելվածների հետ, որոնց տեղեկամատյանները հավաքվում են.
  • ...

Նման երթուղին, որը «գիտի» տոպոլոգիայի մասին, կոչվում է նաև ցանցային կապ. հանգույցի մերձեցում, pod affinity/anti-affinity կամ հայտնվել է ոչ այնքան վաղուց Topology-Aware Volume SchedulingԾավալի ապահովում) Իրականացման ներկա մակարդակը ServiceTopology Kubernetes-ում - ալֆա տարբերակ:

Մանրամասների համար, թե ինչպես է գործում հատկանիշը և ինչպես կարող եք արդեն օգտագործել այն, կարդացեք այս հոդվածը հեղինակներից մեկից։

IPv4/IPv6 երկակի կույտի աջակցություն

Զգալի առաջընթաց ձայնագրվել է ցանցի մեկ այլ հատկանիշում՝ միաժամանակյա աջակցություն երկու IP կույտերի համար, որն առաջին անգամ ներդրվեց K8s 1.16. Մասնավորապես, նոր թողարկումը բերեց հետևյալ փոփոխությունները.

  • kube-proxy-ում իրականացվել է միաժամանակյա աշխատանքի հնարավորություն երկու ռեժիմներում (IPv4 և IPv6);
  • в Pod.Status.PodIPs հայտնվեց աջակցություն ներքև API-ին (միևնույն ժամանակ, ինչպես նաև /etc/hosts այժմ նրանք պահանջում են հյուրընկալողից ավելացնել IPv6 հասցե);
  • կրկնակի կույտի աջակցություն ԿԻՆԴ (Kubernetes IN Docker) և kubeadm;
  • թարմացված e2e թեստեր:

Kubernetes 1.17. հիմնական նորամուծությունների ակնարկ
Նկարազարդում օգտագործելով երկակի կույտ IPV4/IPv6 KIND-ում

Առաջընթաց ՔՀԻ-ում

Հայտարարվել է կայուն տոպոլոգիայի աջակցություն CSI-ի վրա հիմնված պահեստավորման համար, որն առաջին անգամ ներկայացվել է K8s 1.12.

Նախաձեռնություն համար ծավալային պլագինների միգրացիա դեպի CSI - ՔՀԻ միգրացիա - հասել է բետա տարբերակին: Այս հատկությունը չափազանց կարևոր է գոյություն ունեցող պահեստային հավելվածները թարգմանելու համար (ծառի մեջ) դեպի ժամանակակից ինտերֆեյս (CSI, ծառից դուրս) անտեսանելի Kubernetes-ի վերջնական օգտագործողների համար: Կլաստերի ադմինիստրատորներին միայն պետք է միացնեն CSI Միգրացիան, որից հետո գոյություն ունեցող պետական ​​ռեսուրսները և աշխատանքային ծանրաբեռնվածությունը կշարունակեն «պարզապես աշխատել»... բայց օգտագործելով վերջին CSI դրայվերները՝ Kubernetes-ի միջուկում ներառված հնացածների փոխարեն:

Այս պահին AWS EBS վարորդների միգրացիան պատրաստ է բետա տարբերակով (kubernetes.io/aws-ebs) և GCE PD (kubernetes.io/gce-pd) Այլ պահեստային օբյեկտների կանխատեսումները հետևյալն են.

Kubernetes 1.17. հիմնական նորամուծությունների ակնարկ

Մենք խոսեցինք այն մասին, թե ինչպես է «ավանդական» պահեստավորման աջակցությունը 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):

Հետևաբար, դրանք բոլորը վերանվանվել են համապատասխանաբար (ըստ տոպոլոգիայի).

  • 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

... բայց դեռ հասանելի են իրենց հին անուններով (հետադարձ համատեղելիության համար): Այնուամենայնիվ, բոլոր ադմինիստրատորներին խորհուրդ է տրվում անցնել ընթացիկ պիտակների: Առնչվող փաստաթղթեր K8-ը թարմացվել է:

Kubeadm-ի կառուցվածքային ելք

Առաջին անգամ ներկայացված է ալֆա տարբերակով կառուցվածքային ելք kubeadm կոմունալ ծրագրի համար. Աջակցվող ձևաչափեր՝ JSON, YAML, Go ձևանմուշ:

Այս հատկանիշի իրականացման մոտիվացիան (ըստ KEP) է:

Չնայած Kubernetes-ը կարող է ձեռքով գործարկվել, այս գործողության դե ֆակտո (եթե ոչ դե յուրե) ստանդարտը kubeadm-ի օգտագործումն է: Համակարգերի կառավարման հանրահայտ գործիքները, ինչպիսին Terraform-ն է, ապավինում են kubeadm-ին Kubernetes-ի տեղակայման համար: Կլաստերի API-ի ծրագրված բարելավումները ներառում են Kubernetes-ի բեռնաթափման համար նախատեսված փաթեթ՝ kubeadm-ով և cloud-init-ով:

Առանց կառուցվածքային արդյունքի, նույնիսկ ամենաանվնաս փոփոխություններն առաջին հայացքից կարող են կոտրել Terraform-ը, Cluster API-ն և այլ ծրագրեր, որոնք օգտագործում են kubeadm-ի արդյունքները:

Մեր անմիջական ծրագրերը ներառում են աջակցություն (կառուցված արդյունքի տեսքով) հետևյալ kubeadm հրամանների համար.

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

Հրամանին JSON պատասխանի նկարազարդում 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="
}

Այլ նորամուծությունների կայունացում

Ընդհանուր առմամբ, Kubernetes 1.17-ի թողարկումը տեղի ունեցավ նշանաբանի ներքո.Կայունություն« Դրան նպաստեց այն փաստը, որ դրանում առկա են բազմաթիվ առանձնահատկություններ (դրանց ընդհանուր թիվը 14) ստացել է ԳԱ կարգավիճակ: Նրանց մեջ:

Այլ փոփոխություններ

Kubernetes 1.17-ի նորարարությունների ամբողջական ցանկը, իհարկե, չի սահմանափակվում վերը թվարկվածներով: Ահա ևս մի քանիսը (և ավելի ամբողջական ցանկի համար տե՛ս ԸՆԿԵՐՈՒԹՅՈՒՆ):

  • Վերջին թողարկումում ներկայացված գործառույթը հասել է բետա տարբերակի RunAsUserName պատուհանների համար;
  • նմանատիպ փոփոխություն պատահեց EndpointSlice API (նաև K8s 1.16-ից), սակայն առայժմ այս լուծումը, որը բարելավելու է Endpoint API-ի կատարողականությունը/ճշտականությունը, լռելյայն միացված չէ.
  • պատիճներն այժմ կարևոր նշանակություն ունեն կլաստերի շահագործման համար կարող է ստեղծվել ոչ միայն անվանատարածքներում kube-system (մանրամասների համար տե՛ս փաստաթղթերը Սահմանափակել առաջնահերթության դասի սպառումը);
  • նոր տարբերակ kubelet-ի համար - --reserved-cpus — թույլ է տալիս հստակորեն սահմանել համակարգի համար վերապահված պրոցեսորների ցանկը.
  • համար kubectl logs ներկայացված նոր դրոշ --prefix, ավելացնելով պատիճ և աղբյուրի կոնտեյների անվանումը գրանցամատյանի յուրաքանչյուր տողում.
  • в label.Selector ավելացվել է RequiresExactMatch;
  • բոլոր բեռնարկղերը kube-dns-ում այժմ վազում են ավելի քիչ արտոնություններով;
  • հիպերկուբ առանձնացված է առանձին GitHub պահոցում և այլևս չի ներառվի Kubernetes-ի թողարկումներում.
  • շատ բարելավված կատարողականություն kube-proxy ոչ UDP նավահանգիստների համար:

Կախվածության փոփոխություններ.

  • Kubeadm-ում ներառված CoreDNS տարբերակը 1.6.5 է;
  • crictl տարբերակը թարմացվել է v1.16.1;
  • CSI 1.2.0;
  • և այլն 3.4.3;
  • Վերջին փորձարկված Docker տարբերակը թարմացվել է մինչև 19.03;
  • Kubernetes 1.17-ը ստեղծելու համար պահանջվող Go տարբերակը նվազագույնը 1.13.4 է:

PS

Կարդացեք նաև մեր բլոգում.

Source: www.habr.com

Добавить комментарий