Kubernetes 1.14: pagrindinių naujovių apžvalga

Kubernetes 1.14: pagrindinių naujovių apžvalga

Šią naktį vyks kitas Kubernetes leidimas - 1.14. Pagal tradiciją, susiformavusią mūsų tinklaraštyje, mes kalbame apie pagrindinius naujos šio nuostabaus atvirojo kodo produkto versijos pakeitimus.

Informacija, naudota ruošiant šią medžiagą, paimta iš Kubernetes patobulinimų stebėjimo lentelės, PAKEITIMAS-1.14 ir susijusias problemas, ištraukimo užklausas, Kubernetes tobulinimo pasiūlymus (KEP).

Pradėkime nuo svarbios įvado iš SIG klasterio gyvavimo ciklo: dinaminės perjungimo grupės „Kubernetes“ (tiksliau, savarankiški HA diegimai) dabar yra galima sukurti naudojant pažįstamas (vieno mazgo grupių kontekste) komandas kubeadm (init и join). Trumpai tariant, už tai:

  • klasterio naudojami sertifikatai perkeliami į paslaptis;
  • už galimybę naudoti etcd klasterį K8s klasteryje (t. y. atsikratyti anksčiau buvusios išorinės priklausomybės) etcd-operatorius;
  • Dokumentuoja rekomenduojamus parametrus išoriniam apkrovos balansavimui, kuris užtikrina gedimams atsparią konfigūraciją (ateityje planuojama panaikinti šią priklausomybę, bet ne šiame etape).

Kubernetes 1.14: pagrindinių naujovių apžvalga
Kubernetes HA klasterio, sukurto naudojant kubeadm, architektūra

Išsamią įgyvendinimo informaciją galite rasti projektinis pasiūlymas. Šios funkcijos buvo tikrai ilgai laukta: alfa versijos buvo tikimasi dar K8s 1.9, tačiau ji pasirodė tik dabar.

API

Komanda apply ir apskritai kalbant deklaratyvus objektų valdymas praėjokubectl apiserveryje. Tuo savo sprendimą trumpai paaiškina ir patys kūrėjai kubectl apply - pagrindinė darbo su „Kubernetes“ konfigūracijomis dalis, tačiau „ji pilna klaidų ir ją sunku ištaisyti“, todėl šią funkciją reikia grąžinti į normalią ir perkelti į valdymo plokštumą. Paprasti ir aiškūs šiandien egzistuojančių problemų pavyzdžiai:

Kubernetes 1.14: pagrindinių naujovių apžvalga

Išsamią informaciją apie įgyvendinimą rasite KEP. Dabartinė parengtis yra alfa (planuojama pakelti į beta versiją kitame Kubernetes leidime).

Pagaminta alfa versija galimybė naudojant OpenAPI v3 schemą kuriant ir publikuojant OpenAPI dokumentaciją, skirtą CustomResources (CR), naudojamas patvirtinti (serverio pusėje) K8s vartotojo apibrėžtus išteklius (CustomResourceDefinition, CRD). Paskelbus OpenAPI, skirtą CRD, klientai (pvz., kubectl) atlikite patvirtinimą savo pusėje (per kubectl create и kubectl apply) ir išduoti dokumentus pagal schemą (kubectl explain). Išsami informacija – in KEP.

Jau esami rąstai dabar atidaromi su vėliava O_APPEND (bet ne O_TRUNC), kad tam tikrose situacijose būtų išvengta rąstų praradimo ir patogumo sutrumpinti rąstus su išorinėmis komunalinėmis priemonėmis.

Taip pat Kubernetes API kontekste galima pastebėti, kad in PodSandbox и PodSandboxStatus pridėta laukas runtime_handler įrašyti informaciją apie RuntimeClass ankštyje (daugiau apie tai skaitykite tekste apie Kubernetes 1.12 leidimas, kur ši klasė pasirodė kaip alfa versija) ir Admission Webhooks įgyvendinta galimybė nustatyti, kurios versijos AdmissionReview jie palaiko. Galiausiai dabar galiojančios „Admission Webhooks“ taisyklės gali būti ribojamas jų naudojimo mastą vardų erdvės ir klasterių sistemos.

Sandėliavimo patalpos

PersistentLocalVolumes, kurios beta būsena nuo išleidimo K8s 1.10, paskelbė stabilus (GA): šie funkcijų vartai nebėra išjungti ir bus pašalinti naudojant Kubernetes 1.17.

Galimybė naudojant aplinkos kintamuosius, vadinamus Žemyn nukreipta API (pvz., bloko pavadinimas) katalogų, prijungtų kaip, pavadinimams subPath, buvo sukurta – naujos srities pavidalu subPathExpr, kuris dabar naudojamas norimam katalogo pavadinimui nustatyti. Iš pradžių ši funkcija pasirodė Kubernetes 1.11 versijoje, tačiau 1.14 versijoje ji liko alfa versijos būsena.

Kaip ir ankstesniame „Kubernetes“ leidime, aktyviai besivystančioje CSI (konteinerių saugojimo sąsajoje) yra daug reikšmingų pakeitimų:

CSI

Tapo prieinama (kaip alfa versijos dalis) parama CSI tomų dydžio keitimas. Norėdami jį naudoti, turėsite įjungti funkcijų vartus, vadinamus ExpandCSIVolumes, taip pat šios operacijos palaikymas konkrečioje CSI tvarkyklėje.

Kita alfa versijos CSI funkcija - galimybė tiesiogiai (t. y. nenaudodami PV/PVC) nurodykite CSI tomus pod specifikacijoje. Tai panaikinamas apribojimas naudoti CSI kaip išimtinai nuotolinę duomenų saugyklą, atveriantis jiems duris į pasaulį vietiniai efemeriški tomai. Naudojimui (pavyzdys iš dokumentacijos) turi būti įjungtas CSIInlineVolume funkcijų vartai.

Taip pat padaryta pažanga su CSI susijusiuose „Kubernetes“ „vidiniuose“, kurie nėra tokie matomi galutiniams vartotojams (sistemos administratoriams) ... Šiuo metu kūrėjai yra priversti palaikyti dvi kiekvieno saugojimo įskiepio versijas: vieną - „į senas būdas“, K8s kodų bazėje (medyje), o antrasis - kaip naujojo CSI dalis (daugiau apie tai skaitykite, pavyzdžiui, čia). Tai sukelia suprantamų nepatogumų, kuriuos reikia spręsti, nes pats CSI stabilizuojasi. Neįmanoma tiesiog panaikinti vidinių (medyje esančių) papildinių API, nes atitinkama Kubernetes politika.

Visa tai lėmė tai, kad alfa versija pasiekė migracijos procesas vidinis papildinio kodas, įdiegtas kaip in-tree, CSI įskiepiuose, kurių dėka kūrėjų rūpesčiai sumažės iki vienos jų įskiepių versijos palaikymo, o suderinamumas su senomis API išliks ir įprastu scenarijumi gali būti paskelbtas pasenusiais. Tikimasi, kad iki kitos Kubernetes (1.15) laidos visi debesų tiekėjų įskiepiai bus perkelti, diegimas gaus beta būseną ir bus aktyvuotas K8s diegimuose pagal numatytuosius nustatymus. Daugiau informacijos žr projektinis pasiūlymas. Ši migracija taip pat lėmė atmetimas nuo konkrečių debesų paslaugų teikėjų (AWS, Azure, GCE, Cinder) nustatytų apimties apribojimų.

Be to, palaiko blokinius įrenginius su CSI (CSIBlockVolume) perkeltas į beta versiją.

Mazgai / Kubelet

Pateikta alfa versija naujas galutinis taškas į Kubelet, skirtas pagrindinių išteklių grąžos metrikas. Paprastai tariant, jei anksčiau Kubelet gaudavo statistiką apie konteinerio naudojimą iš cAdvisor, dabar šie duomenys gaunami iš konteinerio vykdymo aplinkos per CRI (Container Runtime Interface), tačiau suderinamumas dirbant su senesnėmis Docker versijomis taip pat išsaugomas. Anksčiau Kubelet surinkta statistika buvo siunčiama per REST API, bet dabar galinis taškas, esantis adresu /metrics/resource/v1alpha1. Ilgalaikė kūrėjų strategija yra yra sumažinti Kubelet teikiamų metrikų rinkinį. Beje, patys šie rodikliai dabar jie skambina ne „pagrindinė metrika“, o „išteklių metrika“ ir apibūdinama kaip „pirmos klasės ištekliai, tokie kaip procesorius ir atmintis“.

Labai įdomus niuansas: nepaisant aiškaus gRPC galutinio taško pranašumo, palyginti su įvairiais Prometheus formato naudojimo atvejais (žr. vieno iš etalonų rezultatą žemiau), autoriai pirmenybę teikė Prometėjo tekstiniam formatui dėl aiškaus šios stebėsenos sistemos lyderystės bendruomenėje.

„gRPC nesuderinamas su pagrindiniais stebėjimo vamzdynais. Galutinis taškas bus naudingas tik teikiant metriką į „Metrics Server“ arba stebint komponentus, kurie tiesiogiai su juo integruojami. „Prometheus“ teksto formato našumas naudojant talpyklą „Metrics Server“. pakankamai gerai kad mes teiktume pirmenybę Prometheus, o ne gRPC, atsižvelgiant į tai, kad bendruomenėje plačiai naudojamas Prometėjas. Kai „OpenMetrics“ formatas taps stabilesnis, galėsime priartėti prie gRPC našumo naudodami proto pagrįstą formatą.

Kubernetes 1.14: pagrindinių naujovių apžvalga
Vienas iš lyginamųjų našumo testų naudojant gRPC ir Prometheus formatus naujajame Kubelet galutiniame metrikos taške. Daugiau grafikų ir kitos informacijos rasite KEP.

Tarp kitų pakeitimų:

  • Kubelet dabar (vieną kartą) bando sustoti nežinomos būsenos konteineriai prieš paleisdami iš naujo ir ištryndami.
  • kai naudojant PodPresets dabar į init konteinerį pridedamas ta pati informacija kaip ir įprastam konteineriui.
  • kubelet pradėjo vartoti usageNanoCores iš CRI statistikos teikėjo ir „Windows“ mazgams bei konteineriams pridėta tinklo statistika.
  • Operacinės sistemos ir architektūros informacija dabar įrašoma etiketėse kubernetes.io/os и kubernetes.io/arch Mazgo objektai (perkelti iš beta į GA).
  • Galimybė nurodyti konkrečią sistemos vartotojų grupę konteineriams, esantiems grupėje (RunAsGroup, pasirodė K8s 1.11) pažengęs prieš beta versiją (įjungta pagal numatytuosius nustatymus).
  • du ir rasti naudojamas cAdvisor, pakeistas on Go įgyvendinimas.

CLI

Cli-runtime ir kubectl pridėta -k vėliavėlė, skirta integracijai su pritaikyti (beje, dabar jos kūrimas vykdomas atskiroje saugykloje), t.y. Norėdami apdoroti papildomus YAML failus iš specialių kustomizacijos katalogų (išsamesnės informacijos apie jų naudojimą žr KEP):

Kubernetes 1.14: pagrindinių naujovių apžvalga
Paprasto failo naudojimo pavyzdys pritaikymas (Galimas sudėtingesnis kustomize pritaikymas Perdangos)

Papildomai:

  • Pridėta nauja komanda kubectl create cronjob, kurio pavadinimas kalba pats už save.
  • В kubectl logs dabar gali derinti vėliavos -f (--follow srautiniam žurnalų perdavimui) ir -l (--selector etiketės užklausai).
  • kubectl mokė kopijuoti failus, pasirinktus pakaitos kortele.
  • Į komandą kubectl wait pridėta vėliava --all norėdami pasirinkti visus išteklius nurodyto išteklių tipo vardų srityje.

Kiti

Šios galimybės gavo stabilią (GA) būseną:

Kiti Kubernetes 1.14 pakeitimai:

  • Numatytoji RBAC politika nebeleidžia pasiekti API discovery и access-review naudotojai be autentifikavimo (neautentifikuota).
  • Oficialus CoreDNS palaikymas užtikrinti Tik Linux, todėl naudojant kubeadm diegti jį (CoreDNS) klasteryje, mazgai turi veikti tik Linux sistemoje (šiam apribojimui naudojami nodeSelectors).
  • Dabar yra numatytoji „CoreDNS“ konfigūracija naudoja persiųsti įskiepį vietoj įgaliotojo serverio. Taip pat CoreDNS pridėta ReadinessProbe, kuris neleidžia balansuoti apkrovos atitinkamuose (neparuoštuose aptarnavimui) ankštyse.
  • Kubeadm, fazėse init arba upload-certs, tapo įmanoma įkelkite sertifikatus, reikalingus naujai valdymo plokštumai prijungti prie kubeadm-certs secret (naudokite vėliavėlę --experimental-upload-certs).
  • Atsirado alfa versija, skirta „Windows“ diegimui palaikymas gMSA (Group Managed Service Account) – specialios paskyros Active Directory, kurias taip pat gali naudoti konteineriai.
  • Dėl G.C.E. aktyvuota mTLS šifravimas tarp etcd ir kube-apiserver.
  • Naudotos / priklausomos programinės įrangos atnaujinimai: Go 1.12.1, CSI 1.1, CoreDNS 1.3.1, Docker 18.09 palaikymas kubeadm, o minimali palaikoma Docker API versija dabar yra 1.26.

PS

Taip pat skaitykite mūsų tinklaraštyje:

Šaltinis: www.habr.com

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