Kubernetes 1.17: pagrindinių naujovių apžvalga

Vakar, gruodžio 9 d. įvyko Kitas Kubernetes leidimas - 1.17. Pagal mūsų tinklaraščiui susiklosčiusią tradiciją kalbame apie reikšmingiausius naujosios versijos pakeitimus.

Kubernetes 1.17: pagrindinių naujovių apžvalga

Informacija, naudojama rengiant šią medžiagą, paimta iš oficialaus pranešimo, Kubernetes patobulinimų stebėjimo lentelės, PAKEITIMAS-1.17 ir susijusias problemas, ištraukimo užklausas ir Kubernetes patobulinimo pasiūlymus (KEP). Taigi kas naujo?..

Topologiją žinantis maršrutas

Kubernetes bendruomenė ilgai laukė šios funkcijos - Topologiją žinantis paslaugų maršrutas. Jei KEP jis kilęs 2018 m. spalio mėn., o oficialus patobulinimas — Prieš 2 metus įprasti klausimai (Kaip jis) - ir dar keleriais metais vyresni...

Bendra idėja yra suteikti galimybę įgyvendinti „vietinį“ maršrutą Kubernetes paslaugoms. „Lokalumas“ šiuo atveju reiškia „tą patį topologinį lygį“ (topologijos lygis), kuris gali būti:

  • mazgas identiškas paslaugoms,
  • ta pati serverio lentyna,
  • tas pats regionas
  • tas pats debesies tiekėjas,
  • ...

Šios funkcijos naudojimo pavyzdžiai:

  • sutaupyti srauto debesies įrenginiuose su keliomis pasiekiamumo zonomis (daugialypiai AZ) – žr. nauja iliustracija naudojant srauto iš to paties regiono, bet skirtingų AZ AWS, pavyzdį;
  • mažesnė veikimo delsa / geresnis pralaidumas;
  • suskaidyta paslauga, turinti vietinę informaciją apie mazgą kiekviename fragmente;
  • fluentd (ar analogų) talpinimas tame pačiame mazge su programomis, kurių žurnalai renkami;
  • ...

Toks maršruto parinkimas, kuris „žino“ apie topologiją, dar vadinamas tinklo giminingumu – pagal analogiją su mazgo giminingumas, ankšties giminingumas/anti-afinitetas arba pasirodė ne taip seniai Topologijos apimties planavimas (ir Apimties teikimas). Dabartinis įgyvendinimo lygis ServiceTopology „Kubernetes“ - alfa versija.

Norėdami gauti daugiau informacijos apie tai, kaip ši funkcija veikia ir kaip jau galite ja naudotis, skaitykite Šis straipsnis iš vieno iš autorių.

IPv4/IPv6 dviejų krūvų palaikymas

Reikšminga pažanga fiksuotas kitoje tinklo savybėje: tuo pačiu metu palaikomas du IP dėklas, kuris pirmą kartą buvo pristatytas K8s 1.16. Visų pirma, nauja versija atnešė šiuos pakeitimus:

  • kube-proxy įgyvendinta galimybė vienu metu veikti abiem režimais (IPv4 ir IPv6);
  • в Pod.Status.PodIPs pasirodė žemyn nukreiptos API palaikymas (tuo pačiu metu kaip ir /etc/hosts dabar jie reikalauja, kad priegloba pridėtų IPv6 adresą);
  • dviejų krūvų palaikymas MALONUS (Kubernetes IN Docker) ir kubeadm;
  • atnaujinti e2e testai.

Kubernetes 1.17: pagrindinių naujovių apžvalga
Iliustracija naudojant dvigubą IPV4 / IPv6 KIND

CSI pažanga

Paskelbtas stabilus topologijos palaikymas CSI pagrįsta saugykla, pirmą kartą pristatyta K8s 1.12.

Iniciatyva už apimties įskiepių perkėlimas į CSI - CSI migracija - pasiekė beta versiją. Ši funkcija yra labai svarbi norint išversti esamus saugyklos papildinius (medyje) į modernią sąsają (CSI, iš medžio) nematomas Kubernetes galutiniams vartotojams. Klasterių administratoriams tereikės įjungti CSI migraciją, po kurios esami būsenos ištekliai ir darbo krūviai ir toliau „tiks dirbs“... bet naudos naujausias CSI tvarkykles, o ne pasenusias, įtrauktas į Kubernetes branduolį.

Šiuo metu AWS EBS tvarkyklių perkėlimas yra paruoštas beta versijoje (kubernetes.io/aws-ebs) ir GCE PD (kubernetes.io/gce-pd). Kitų saugyklų prognozės yra tokios:

Kubernetes 1.17: pagrindinių naujovių apžvalga

Kalbėjomės apie tai, kaip „tradicinis“ saugojimo palaikymas K8s atėjo į CSI Šis straipsnis. Ir skirtas CSI perkėlimo į beta būseną perėjimas atskiras leidinys projekto tinklaraštyje.

Be to, kita svarbi funkcija CSI kontekste, kuri yra (alfa diegimas) K1.17s 8 versijoje, pasiekė beta būseną (t. y. įjungta pagal numatytuosius nustatymus) Kubernetes 1.12 leidime. momentinių nuotraukų kūrimas ir atsigavimas nuo jų. Tarp „Kubernetes Volume Snapshot“ pakeitimų, susijusių su beta versijos išleidimu:

  • CSI išorinio momentinio fotografavimo šoninės priekabos padalijimas į du valdiklius,
  • pridėta slapta ištrinti (ištrynimo paslaptis) kaip tūrinės momentinės nuotraukos turinio anotaciją,
  • naujas finalininkas (finalizatorius) kad nebūtų ištrintas momentinis API objektas, jei yra likusių ryšių.

1.17 versijos išleidimo metu šią funkciją palaiko trys CSI tvarkyklės: GCE nuolatinio disko CSI tvarkyklė, Portworx CSI tvarkyklė ir NetApp Trident CSI tvarkyklė. Daugiau informacijos apie jo įgyvendinimą ir naudojimą rasite šį leidinį tinklaraštyje.

Debesų paslaugų teikėjo etiketės

Etiketės, kurios automatiškai priskiriami sukurtiems mazgams ir tomams, atsižvelgiant į naudojamą debesies tiekėją, buvo prieinami Kubernetes kaip beta versija labai ilgą laiką - nuo K8s 1.2 išleidimo (2016 m. balandžio mėn!). Atsižvelgiant į jų platų naudojimą taip ilgai, kūrėjai nusprendė, kad laikas paskelbti funkciją stabilia (GA).

Todėl jie visi buvo atitinkamai pervadinti (pagal topologiją):

  • 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

... bet vis dar yra senais pavadinimais (atgaliniam suderinamumui). Tačiau visiems administratoriams rekomenduojama pereiti prie dabartinių etikečių. Susijusi dokumentacija K8s buvo atnaujintas.

Struktūrinė kubeadm išvestis

Pirmą kartą pateikta alfa versija struktūrizuota kubeadm įrankio išvestis. Palaikomi formatai: JSON, YAML, Go šablonas.

Motyvacija įgyvendinti šią funkciją (pagal KEP) yra:

Nors Kubernetes galima įdiegti rankiniu būdu, de facto (jei ne de jure) šios operacijos standartas yra naudoti kubeadm. Populiarūs sistemų valdymo įrankiai, tokie kaip „Terraform“, remiasi „kubeadm“ diegiant „Kubernetes“. Planuojami klasterio API patobulinimai apima sukomponuojamą „Kubernetes“ įkrovos paketą su „kubeadm“ ir „Cloud-init“.

Be struktūrinės išvesties, net ir iš pirmo žvilgsnio nekenksmingiausi pakeitimai gali sugadinti Terraform, Cluster API ir kitą programinę įrangą, kuri naudoja kubeadm rezultatus.

Mūsų artimiausi planai apima palaikymą (struktūrinės išvesties pavidalu) šioms kubeadm komandoms:

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

JSON atsako į komandą iliustracija 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="
}

Kitų naujovių stabilizavimas

Apskritai „Kubernetes 1.17“ išleidimas vyko šūkiu „Stabilumas“ Tai palengvino tai, kad jame yra daug funkcijų (bendras jų skaičius yra 14) gavo GA būseną. Tarp jų:

Kiti pakeitimai

Visas Kubernetes 1.17 naujovių sąrašas, žinoma, neapsiriboja aukščiau išvardytomis. Štai keletas kitų (ir išsamesnį sąrašą žr CHANGELOGAS):

  • Paskutiniame leidime pateikta funkcija pasiekė beta versiją RunAsUserName už langus;
  • panašus pokytis ištiko EndpointSlice API (taip pat iš K8s 1.16), tačiau kol kas šis sprendimas, skirtas Endpoint API našumui / mastelio keitimui pagerinti, nėra įjungtas pagal numatytuosius nustatymus;
  • ankštys dabar yra labai svarbios klasterio veikimui galima sukurti ne tik vardų erdvėse kube-system (daugiau informacijos ieškokite dokumentacijoje Apriboti Priority Class suvartojimą);
  • nauja kubelet parinktis - --reserved-cpus — leidžia aiškiai apibrėžti sistemai rezervuotų procesorių sąrašą;
  • kubectl logs pateiktas nauja vėliava --prefix, pridedant ankšties pavadinimą ir šaltinio konteinerį prie kiekvienos žurnalo eilutės;
  • в label.Selector pridėta RequiresExactMatch;
  • visi konteineriai kube-dns dabar veikia su mažesnėmis privilegijomis;
  • hiperkubas atskirtas į atskirą „GitHub“ saugyklą ir nebebus įtrauktas į „Kubernetes“ leidimus;
  • daug pagerintas našumas kube-proxy ne UDP prievadams.

Priklausomybės pokyčiai:

  • CoreDNS versija, įtraukta į kubeadm, yra 1.6.5;
  • crictl versija atnaujinta į v1.16.1;
  • CSI 1.2.0;
  • etcd 3.4.3;
  • Paskutinė išbandyta Docker versija, atnaujinta iki 19.03;
  • Minimali „Go“ versija, reikalinga kuriant „Kubernetes 1.17“, yra 1.13.4.

PS

Taip pat skaitykite mūsų tinklaraštyje:

Šaltinis: www.habr.com

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