Kubernetes 1.14: pregled glavnih novosti

Kubernetes 1.14: pregled glavnih novosti

To noč poteka naslednja izdaja Kubernetesa - 1.14. Po tradiciji, ki se je razvila za naš blog, govorimo o ključnih spremembah v novi različici tega čudovitega odprtokodnega izdelka.

Podatki, uporabljeni za pripravo tega gradiva, so vzeti iz Tabele za sledenje izboljšav Kubernetes, DNEVNIK SPREMEMB-1.14 in sorodna vprašanja, zahteve za vleko, predlogi za izboljšavo Kubernetes (KEP).

Začnimo s pomembnim uvodom iz življenjskega cikla gruče SIG: dinamične samodejne gruče Kubernetes (ali če smo natančnejši, samostojne uvedbe HA) je zdaj se lahko ustvari z uporabo znanih (v kontekstu gruč z enim vozliščem) ukazov kubeadm (init и join). Skratka za tole:

  • potrdila, ki jih uporablja grozd, se prenesejo v skrivnosti;
  • za možnost uporabe gruče etcd znotraj gruče K8s (t.j. znebite se predhodno obstoječe zunanje odvisnosti) etcd-operator;
  • Dokumentira priporočene nastavitve za zunanji izravnalnik obremenitve, ki zagotavlja konfiguracijo, odporno na napake (v prihodnosti je načrtovana odprava te odvisnosti, vendar ne na tej stopnji).

Kubernetes 1.14: pregled glavnih novosti
Arhitektura gruče Kubernetes HA, ustvarjene s kubeadm

Podrobnosti o izvedbi najdete v predlog oblikovanja. Ta funkcija je bila res dolgo pričakovana: alfa različica je bila pričakovana že v K8s 1.9, vendar se je pojavila šele zdaj.

API

Ekipa apply in na splošno deklarativno upravljanje objektov opravili z dne kubectl v apiserverju. Razvijalci sami svojo odločitev na kratko razložijo s tem kubectl apply - temeljni del dela s konfiguracijami v Kubernetesu, vendar je "poln hroščev in ga je težko popraviti," zato je treba to funkcionalnost vrniti v normalno stanje in prenesti v nadzorno ravnino. Preprosti in jasni primeri težav, ki obstajajo danes:

Kubernetes 1.14: pregled glavnih novosti

Podrobnosti o izvedbi so v KEP. Trenutna pripravljenost je alfa (napredovanje v beta je načrtovano za naslednjo izdajo Kubernetes).

Na voljo v različici alfa priložnost z uporabo sheme OpenAPI v3 za ustvarjanje in objavljanje dokumentacije OpenAPI za CustomResources (CR), ki se uporablja za preverjanje (na strani strežnika) uporabniško definiranih virov K8s (CustomResourceDefinition, CRD). Objava OpenAPI za CRD omogoča odjemalcem (npr. kubectl) izvede preverjanje na vaši strani (znotraj kubectl create и kubectl apply) in izda dokumentacijo po shemi (kubectl explain). Podrobnosti - v KEP.

Že obstoječi dnevniki se zdaj odpirajo z zastavo O_APPEND (vendar ne O_TRUNC), da bi se izognili izgubi dnevnikov v nekaterih situacijah in zaradi priročnosti prirezovanja dnevnikov z zunanjimi pripomočki za rotacijo.

Tudi v kontekstu API-ja Kubernetes je mogoče opaziti, da v PodSandbox и PodSandboxStatus dodano polje runtime_handler za beleženje informacij o RuntimeClass v pod (več o tem v besedilu o Izdaja Kubernetes 1.12, kjer se je ta razred pojavil kot različica alfa), in v Admission Webhooks izvajati sposobnost določiti, katere različice AdmissionReview podpirajo. Končno so zdaj pravila Admission Webhooks se lahko omeji obseg njihove uporabe v imenskih prostorih in ogrodjih gruč.

Shranjevanje

PersistentLocalVolumes, ki je imel od izdaje status beta K8s 1.10, napovedal stabilen (GA): ta vrata funkcije niso več onemogočena in bodo odstranjena v Kubernetesu 1.17.

Priložnost z uporabo okoljskih spremenljivk, imenovanih API navzdol (na primer ime sklopa) za imena imenikov, nameščenih kot subPath, je bil razvit - v obliki novega področja subPathExpr, ki se zdaj uporablja za določitev želenega imena imenika. Funkcija se je sprva pojavila v Kubernetes 1.11, vendar je za 1.14 ostala v statusu različice alfa.

Tako kot pri prejšnji izdaji Kubernetes, je uvedenih veliko pomembnih sprememb za CSI (Container Storage Interface), ki se aktivno razvija:

CSI

Na voljo (kot del alfa različice) podporo spreminjanje velikosti za nosilce CSI. Če ga želite uporabiti, boste morali omogočiti imenovana vrata funkcije ExpandCSIVolumes, kot tudi prisotnost podpore za to operacijo v določenem gonilniku CSI.

Še ena funkcija za CSI v različici alfa - priložnost nanašajte se neposredno (tj. brez uporabe PV/PVC) na prostornine CSI znotraj specifikacije stroka. to odpravlja omejitev uporabe CSI kot izključno oddaljenega shranjevanja podatkov, ki jim odpira vrata v svet lokalne efemerne količine. Za uporabo (primer iz dokumentacije) mora biti omogočeno CSIInlineVolume značilnost vrat.

Napredek je bil dosežen tudi pri »notranjih delih« Kubernetesa, povezanih s CSI, ki niso tako vidni končnim uporabnikom (sistemskim skrbnikom) ... Trenutno so razvijalci prisiljeni podpirati dve različici vsakega vtičnika za shranjevanje: eno - »v old way«, znotraj kodne baze K8s (in -tree), drugi pa kot del novega CSI (več o tem preberite na primer v tukaj). To povzroča razumljive nevšečnosti, ki jih je treba obravnavati, ko se CSI sam stabilizira. API-ja notranjih (v drevesu) vtičnikov ni mogoče preprosto opustiti zaradi ustrezne politike Kubernetes.

Vse to je pripeljalo do dejstva, da je različica alfa dosegla proces migracije notranja koda vtičnika, implementiran kot in-tree, v vtičnike CSI, zaradi česar bodo skrbi razvijalcev zmanjšane na podporo eni različici njihovih vtičnikov, združljivost s starimi API-ji pa bo ostala in jih je mogoče razglasiti za zastarele v običajnem scenariju. Pričakuje se, da bodo do naslednje izdaje Kubernetesa (1.15) vsi vtičniki ponudnikov oblakov preseljeni, izvedba bo prejela status beta in bo privzeto aktivirana v namestitvah K8s. Za podrobnosti glejte predlog oblikovanja. Ta selitev je povzročila tudi odpoved od omejitev količine, ki jih določijo določeni ponudniki oblakov (AWS, Azure, GCE, Cinder).

Dodatno podpora za blok naprave s CSI (CSIBlockVolume) preneseno na različico beta.

Vozlišča/Kubelet

Predstavljena alfa različica nova končna točka v Kubeletu, namenjen za vrni meritve o ključnih virih. Na splošno, če je prej Kubelet prejemal statistične podatke o uporabi vsebnika od cAdvisorja, zdaj ti podatki prihajajo iz izvajalnega okolja vsebnika prek CRI (Container Runtime Interface), vendar je ohranjena tudi združljivost za delo s starejšimi različicami Dockerja. Prej so bili statistični podatki, zbrani v Kubeletu, poslani prek API-ja REST, zdaj pa končna točka, ki se nahaja na /metrics/resource/v1alpha1. Dolgoročna strategija razvijalcev je je zmanjšati nabor meritev, ki jih ponuja Kubelet. Mimogrede, te meritve same zdaj kličejo ne »osnovne meritve«, ampak »metrike virov« in so opisane kot »prvorazredni viri, kot sta procesor in pomnilnik«.

Zelo zanimiv odtenek: kljub jasni prednosti končne točke gRPC v primerjavi z različnimi primeri uporabe formata Prometheus (glejte rezultat enega od spodnjih meril), so avtorji dali prednost besedilnemu formatu Prometheusa zaradi jasnega vodstva tega sistema spremljanja v skupnosti.

»gRPC ni združljiv z večjimi cevovodi za spremljanje. Končna točka bo uporabna samo za dostavo metrik strežniku Metrics Server ali komponent za spremljanje, ki se neposredno integrirajo z njim. Zmogljivost zapisa besedila Prometheus pri uporabi predpomnjenja v Metrics Server dovolj dobro da imamo raje Prometheus kot gRPC glede na široko sprejetje Prometheusa v skupnosti. Ko bo format OpenMetrics postal stabilnejši, se bomo lahko približali zmogljivosti gRPC s formatom, ki temelji na proto.”

Kubernetes 1.14: pregled glavnih novosti
Eden od primerjalnih preizkusov učinkovitosti uporabe formatov gRPC in Prometheus v novi končni točki Kubelet za meritve. Več grafov in drugih podrobnosti najdete v KEP.

Med drugimi spremembami:

  • Kubelet zdaj (enkrat) poskuša ustaviti vsebnike v neznanem stanju pred ponovnim zagonom in operacijami brisanja.
  • Pri uporabi PodPresets zdaj v zagonski vsebnik dodano enake informacije kot pri običajni posodi.
  • kubelet začel uporabljati usageNanoCores od ponudnika statistike CRI ter za vozlišča in vsebnike v sistemu Windows dodano statistika omrežja.
  • Podatki o operacijskem sistemu in arhitekturi so zdaj zabeleženi v oznakah kubernetes.io/os и kubernetes.io/arch Objekti vozlišč (preneseni iz beta v GA).
  • Zmožnost določitve določene sistemske uporabniške skupine za vsebnike v sklopu (RunAsGroup, se je pojavil v K8s 1.11) napredno pred različico beta (privzeto omogočeno).
  • du in poiščite uporabljeno v cAdvisor, zamenjal on Go implementacija.

CLI

V cli-runtime in kubectl dodano -k zastavica za integracijo z prilagoditi (mimogrede, njegov razvoj se zdaj izvaja v ločenem repozitoriju), tj. za obdelavo dodatnih datotek YAML iz posebnih imenikov za prilagajanje (za podrobnosti o njihovi uporabi glejte KEP):

Kubernetes 1.14: pregled glavnih novosti
Primer preproste uporabe datoteke prilagoditev (možna je bolj zapletena uporaba kustomize znotraj prekrivke)

Poleg tega:

  • Dodano nova ekipa kubectl create cronjob, katerega ime govori samo zase.
  • В kubectl logs zdaj lahko združiti zastave -f (--follow za pretakanje dnevnikov) in -l (--selector za poizvedbo po oznaki).
  • kubectl učil kopirajte datoteke, izbrane z nadomestnim znakom.
  • Za ekipo kubectl wait dodano zastava --all da izberete vse vire v imenskem prostoru navedene vrste vira.

Drugo

Naslednje zmogljivosti so prejele stabilen status (GA):

Druge spremembe, uvedene v Kubernetes 1.14:

  • Privzeti pravilnik RBAC ne dovoljuje več dostopa do API-ja discovery и access-review uporabniki brez avtentikacije (nepreverjeno).
  • Uradna podpora za CoreDNS zagotovljeno Samo za Linux, torej pri uporabi kubeadm za njegovo uvajanje (CoreDNS) v gruči, se morajo vozlišča izvajati samo v Linuxu (za to omejitev se uporabljajo izbirniki vozlišč).
  • Privzeta konfiguracija CoreDNS je zdaj uporablja naprej vtičnik namesto proxyja. Tudi v CoreDNS dodano readinessProbe, ki preprečuje uravnoteženje obremenitve na ustreznih (nepripravljenih za uporabo) podih.
  • V kubeadmu, na fazah init ali upload-certs, postalo možno naložite potrdila, potrebna za povezavo nove nadzorne ravnine s skrivnostjo kubeadm-certs (uporabite zastavico --experimental-upload-certs).
  • Pojavila se je alfa različica za namestitev sistema Windows podpora gMSA (Group Managed Service Account) - posebni računi v imeniku Active Directory, ki jih lahko uporabljajo tudi kontejnerji.
  • Za G.C.E. aktiviran Šifriranje mTLS med etcd in kube-apiserver.
  • Posodobitve uporabljene/odvisne programske opreme: Go 1.12.1, CSI 1.1, CoreDNS 1.3.1, podpora za Docker 18.09 v kubeadm in najmanjša podprta različica API-ja Docker je zdaj 1.26.

PS

Preberite tudi na našem blogu:

Vir: www.habr.com

Dodaj komentar