Kubernetes 1.14: uudiste esiletõstmised

Kubernetes 1.14: uudiste esiletõstmised

Sel ööl toimub Kubernetese järgmine väljalase - 1.14. Meie ajaveebi jaoks välja kujunenud traditsiooni kohaselt räägime selle imelise avatud lähtekoodiga toote uue versiooni peamistest muudatustest.

Selle materjali ettevalmistamiseks kasutatud teave on võetud Kubernetese täiustuste jälgimistabelid, MUUTUS-1.14 ja sellega seotud probleemid, tõmbamistaotlused, Kubernetes Enhancement Proposals (KEP).

Alustame olulise sissejuhatusega SIG-klastri elutsüklist: dünaamilised tõrkesiirdeklastrid Kubernetes (või täpsemalt öeldes isehostitavad HA juurutused) on nüüd olemas saab luua kasutades tuttavaid (ühesõlmeliste klastrite kontekstis) käske kubeadm (init и join). Lühidalt selle jaoks:

  • klastri kasutatavad sertifikaadid kantakse üle saladustesse;
  • Etdd klastri kasutamise võimaluse eest K8s klastri sees (st vabaneda varem eksisteerinud välisest sõltuvusest) etcd-operaator;
  • Dokumenteerib välise koormuse tasakaalustaja soovitatavad sätted, mis pakub tõrketaluvusega konfiguratsiooni (tulevikus on plaanis see sõltuvus kõrvaldada, kuid mitte praeguses etapis).

Kubernetes 1.14: uudiste esiletõstmised
Kubeadmi abil loodud Kubernetes HA klastri arhitektuur

Rakenduse üksikasjad leiate aadressilt kujundusettepanek. See funktsioon oli tõesti kauaoodatud: alfaversiooni oodati juba K8s 1.9-s, kuid see ilmus alles nüüd.

API

Meeskond apply ja üldiselt öeldes deklaratiivne objektihaldus möödas kohta kubectl apiserveris. Arendajad ise selgitavad oma otsust lühidalt sellega kubectl apply - Kubernetese konfiguratsioonidega töötamise põhiosa, kuid "see on täis vigu ja seda on raske parandada" ning seetõttu tuleb see funktsioon taastada normaalseks ja üle kanda juhttasandile. Lihtsad ja selged näited tänapäeval eksisteerivatest probleemidest:

Kubernetes 1.14: uudiste esiletõstmised

Rakenduse üksikasjad on kirjas KEP. Praegune valmisolek on alfa (üleminek beetaversiooniks on kavandatud järgmise Kubernetese väljaande jaoks).

Saadaval alfa-versioonis võimalus kasutades OpenAPI v3 skeemi OpenAPI dokumentatsiooni loomine ja avaldamine CustomResourcesi jaoks (CR), mida kasutatakse (serveripoolsete) K8s kasutaja määratud ressursside valideerimiseks (CustomResourceDefinition, CRD). OpenAPI avaldamine CRD jaoks võimaldab klientidel (nt. kubectl) teostage valideerimine teie poolel (sees kubectl create и kubectl apply) ja väljastada dokumentatsiooni vastavalt skeemile (kubectl explain). Üksikasjad - sisse KEP.

Olemasolevad palgid on nüüd avatud lipuga O_APPEND (kuid mitte O_TRUNC), et vältida teatud olukordades palkide kadumist ja väliste utiliitidega palkide kärpimise mugavuse huvides.

Ka Kubernetes API kontekstis võib märkida, et in PodSandbox и PodSandboxStatus lisatud väli runtime_handler kohta teabe salvestamiseks RuntimeClass kaunas (loe selle kohta lähemalt tekstist Kubernetes 1.12 väljalase, kus see klass ilmus alfaversioonina) ja sissepääsu veebihaagides rakendatud võimalus määrata, millised versioonid AdmissionReview nad toetavad. Lõpuks kehtivad sissepääsu veebihaagi reeglid saab piirata nende kasutuse ulatus nimeruumide ja klastriraamistike poolt.

Vaults

PersistentLocalVolumes, millel oli alates avaldamisest beetaversioon K8s 1.10, teatas stabiilne (GA): see funktsioonivärav pole enam keelatud ja Kubernetes 1.17 eemaldatakse.

Võimalus nimega keskkonnamuutujaid kasutades Allapoole suunatud API (nt pod nimi) kataloogide nimede jaoks, mis on ühendatud kui subPath, töötati välja – uue valdkonna näol subPathExpr, mida kasutatakse nüüd soovitud kataloogi nime määramiseks. Funktsioon ilmus algselt versioonis Kubernetes 1.11, kuid 1.14 puhul jäi see alfaversiooni olekusse.

Nagu eelmise Kubernetese väljaande puhul, tehakse aktiivselt arenevas CSI-s (konteinerite salvestusliides) palju olulisi muudatusi:

CSI

Sai saadavale (alfa versiooni osana) toetama CSI mahtude suuruse muutmine. Selle kasutamiseks peate lubama funktsioonivärava nimega ExpandCSIVolumes, samuti selle toimingu toe olemasolu konkreetses CSI draiveris.

Teine alfaversiooni CSI funktsioon - võimalus viitavad otse (st ilma PV/PVC-d kasutamata) CSI-mahtudele podi spetsifikatsioonis. See eemaldab piirangu CSI kasutamisele eranditult kaugandmesalvestusena, avades neile uksed maailma kohalikud efemeersed köited. Kasutamiseks (näide dokumentatsioonist) peab olema lubatud CSIInlineVolume funktsiooni värav.

Edu on saavutatud ka CSI-ga seotud Kubernetese sisemistes, mis pole lõppkasutajatele (süsteemiadministraatoritele) nii nähtavad ... Praegu on arendajad sunnitud toetama iga salvestusplugina kahte versiooni: üks - " vana moodi”, K8s koodibaasi sees (-puus) ja teine ​​- uue CSI osana (loe selle kohta lähemalt nt siin). See põhjustab arusaadavaid ebamugavusi, millega tuleb tegeleda, kuna CSI ise stabiliseerub. Sisemiste (puusiseste) pistikprogrammide API-d ei ole võimalik lihtsalt katkestada, kuna asjakohane Kubernetese poliitika.

Kõik see viis selleni, et alfa versioon jõudis migratsiooniprotsess sisemine pistikprogrammi kood, mis on juurutatud puusisesena, CSI pluginates, tänu millele taandub arendajate mure oma pluginate ühe versiooni toetamisele ning ühilduvus vanade API-dega säilib ning need saab tavapärase stsenaariumi korral aegunuks kuulutada. Eeldatakse, et järgmiseks Kubernetese (1.15) väljalaseks migreeritakse kõik pilveteenuse pakkuja pistikprogrammid, juurutus saab beetaoleku ja aktiveeritakse vaikimisi K8s installides. Üksikasju vt kujundusettepanek. Selle migratsiooni tulemuseks oli ka ebaõnnestumine konkreetsete pilveteenuse pakkujate (AWS, Azure, GCE, Cinder) määratud mahupiirangutest.

Lisaks toetab CSI-ga (CSIBlockVolume) üle kantud beetaversioonile.

Sõlmed/Kubelet

Esitatud alfaversioon uus lõpp-punkt Kubeletis, mis on mõeldud põhiressursside tagastamise mõõdikud. Üldiselt võib öelda, et kui varem sai Kubelet konteineri kasutamise statistika cAdvisorist, siis nüüd tulevad need andmed konteineri käituskeskkonnast CRI (Container Runtime Interface) kaudu, kuid ühilduvus töötamiseks Dockeri vanemate versioonidega on samuti säilinud. Varem saadeti Kubeletis kogutud statistika REST API kaudu, nüüd aga otspunkt, mis asub aadressil /metrics/resource/v1alpha1. Arendajate pikaajaline strateegia koosneb on Kubeleti pakutavate mõõdikute komplekti minimeerimine. Muide, need mõõdikud ise nüüd nad helistavad mitte "põhimõõdikud", vaid "ressursside mõõdikud" ja neid kirjeldatakse kui "esimese klassi ressursse, nagu protsessor ja mälu".

Väga huvitav nüanss: hoolimata gRPC lõpp-punkti selgest jõudluse eelisest võrreldes Prometheuse vormingu erinevate kasutusjuhtudega (vt ühe võrdlusuuringu tulemust allpool), eelistasid autorid Prometheuse tekstivormingut selle seiresüsteemi selge juhtimise tõttu kogukonnas.

„gRPC ei ühildu suuremate seiretorustikega. Lõpp-punkt on kasulik ainult mõõdikute edastamiseks Metrics Serverisse või sellega otse integreeritavate komponentide jälgimiseks. Prometheuse tekstivormingu jõudlus vahemällu kasutamisel Metrics Serveris piisavalt hea et me eelistaksime Prometheust gRPC-le, arvestades Prometheuse laialdast kasutuselevõttu kogukonnas. Kui OpenMetricsi vorming muutub stabiilsemaks, saame läheneda gRPC jõudlusele protopõhise vorminguga.

Kubernetes 1.14: uudiste esiletõstmised
Üks võrdlevatest toimivustestidest gRPC ja Prometheuse vormingute kasutamisel mõõdikute uues Kubeleti lõpp-punktis. Rohkem graafikuid ja muid üksikasju leiate aadressilt KEP.

Muude muudatuste hulgas:

  • Kubelet nüüd (üks kord) püüdes peatada enne taaskäivitamist ja kustutamistoiminguid tundmatus olekus konteinerid.
  • Kui kasutate PodPresets nüüd init konteinerisse on lisatud sama teave, mis tavalise konteineri puhul.
  • kubelet kasutama hakkas usageNanoCores CRI statistika pakkujalt ning Windowsi sõlmede ja konteinerite jaoks lisatud võrgu statistika.
  • Operatsioonisüsteemi ja arhitektuuri teave on nüüd salvestatud siltidele kubernetes.io/os и kubernetes.io/arch Sõlmeobjektid (üle viidud beetaversioonist GA-sse).
  • Võimalus määrata kaustas olevate konteinerite jaoks konkreetne süsteemi kasutajarühm (RunAsGroup, ilmus aastal K8s 1.11) edasijõudnud enne beetaversiooni (vaikimisi lubatud).
  • du ja find kasutatakse cAdvisoris, asendatud on Go rakendamine.

CLI

Cli-runtime'is ja kubectlis lisatud -k lipp integreerimiseks kohandada (muide, selle arendus toimub nüüd eraldi hoidlas), st. täiendavate YAML-failide töötlemiseks spetsiaalsetest kustomimiskataloogidest (üksikasju nende kasutamise kohta vt KEP):

Kubernetes 1.14: uudiste esiletõstmised
Näide lihtsast failikasutusest kohandamine (Sees on võimalik kustomize'i keerulisem rakendus ülekatted)

Lisaks:

  • Lisatud uus meeskond kubectl create cronjob, mille nimi räägib enda eest.
  • В kubectl logs nüüd sa saad ühendada lipud -f (--follow logide voogesituse jaoks) ja -l (--selector sildi päringu jaoks).
  • kubectl õpetanud kopeerida metamärgiga valitud failid.
  • Meeskonnale kubectl wait lisatud lipp --all et valida kõik määratud ressursitüübi nimeruumis olevad ressursid.

Teised

Järgmised võimalused on saanud stabiilse (GA) oleku:

Muud versioonis Kubernetes 1.14 tehtud muudatused:

  • RBAC-i vaikepoliitika ei võimalda enam API-le juurdepääsu discovery и access-review kasutajad ilma autentimiseta (autentimata).
  • Ametlik CoreDNS-i tugi tagatud Ainult Linux, nii et kui kasutate selle juurutamiseks kubeadmi (CoreDNS) klastris, peavad sõlmed töötama ainult Linuxis (selle piirangu jaoks kasutatakse nodeSelectoreid).
  • CoreDNS-i vaikekonfiguratsioon on nüüd kasutab edasi plugin puhverserveri asemel. Samuti CoreDNS-is lisatud ReadinessProbe, mis takistab koormuse tasakaalustamist sobivatel (hoolduseks mittevalmis) kaustadel.
  • Kubeadmis, faasides init või upload-certs, sai võimalikuks laadige sertifikaadid, mis on vajalikud uue juhttasandi ühendamiseks kubeadm-certs secretiga (kasutage lippu --experimental-upload-certs).
  • Windowsi installide jaoks on ilmunud alfaversioon Toetama gMSA (Group Managed Service Account) – Active Directory spetsiaalsed kontod, mida saavad kasutada ka konteinerid.
  • G.C.E. aktiveeritud mTLS-i krüptimine etcd ja kube-apiserveri vahel.
  • Värskendused kasutatud/sõltuvas tarkvaras: Go 1.12.1, CSI 1.1, CoreDNS 1.3.1, Docker 18.09 tugi kubeadmis ja minimaalne toetatud Docker API versioon on nüüd 1.26.

PS

Loe ka meie blogist:

Allikas: www.habr.com

Lisa kommentaar