Kubernetes 1.14: Uchafbwyntiau o'r hyn sy'n newydd

Kubernetes 1.14: Uchafbwyntiau o'r hyn sy'n newydd

Y noson hon yn digwydd datganiad nesaf Kubernetes - 1.14. Yn ôl y traddodiad sydd wedi datblygu ar gyfer ein blog, rydym yn sôn am y newidiadau allweddol yn y fersiwn newydd o'r cynnyrch Ffynhonnell Agored gwych hwn.

Daw'r wybodaeth a ddefnyddiwyd i baratoi'r deunydd hwn o Tablau olrhain gwelliannau Kubernetes, CHANGELOG-1.14 a materion cysylltiedig, ceisiadau tynnu, Cynigion Gwella Kubernetes (KEP).

Gadewch i ni ddechrau gyda chyflwyniad pwysig o gylch bywyd clwstwr SIG: clystyrau methiant deinamig Mae Kubernetes (neu i fod yn fwy manwl gywir, gosodiadau HA hunangynhaliol) bellach gellir ei greu defnyddio gorchmynion cyfarwydd (yng nghyd-destun clystyrau un nod). kubeadm (init и join). Yn fyr, ar gyfer hyn:

  • mae tystysgrifau a ddefnyddir gan y clwstwr yn cael eu trosglwyddo i gyfrinachau;
  • am y posibilrwydd o ddefnyddio’r clwstwr ac ati y tu mewn i’r clwstwr K8s (h.y. cael gwared ar y ddibyniaeth allanol a oedd yn bodoli’n flaenorol) etcd-weithredwr;
  • Yn dogfennu'r gosodiadau a argymhellir ar gyfer cydbwysedd llwyth allanol sy'n darparu cyfluniad sy'n goddef namau (yn y dyfodol bwriedir dileu'r ddibyniaeth hon, ond nid ar hyn o bryd).

Kubernetes 1.14: Uchafbwyntiau o'r hyn sy'n newydd
Pensaernïaeth clwstwr HA Kubernetes wedi'i greu gyda kubeadm

Ceir manylion y gweithredu yn cynnig dylunio. Roedd y nodwedd hon yn wirioneddol hir-ddisgwyliedig: roedd disgwyl y fersiwn alffa yn ôl yn K8s 1.9, ond dim ond nawr yr ymddangosodd.

API

Tîm apply a siarad yn gyffredinol rheoli gwrthrychau datganiadol pasio o kubectl mewn gweinydd. Mae'r datblygwyr eu hunain yn egluro eu penderfyniad yn fyr trwy ddweud hynny kubectl apply - rhan sylfaenol o weithio gyda chyfluniadau yn Kubernetes, fodd bynnag, “mae'n llawn chwilod ac yn anodd ei drwsio,” ac felly mae angen dod â'r swyddogaeth hon yn ôl i normal a'i throsglwyddo i'r awyren reoli. Enghreifftiau syml a chlir o broblemau sy'n bodoli heddiw:

Kubernetes 1.14: Uchafbwyntiau o'r hyn sy'n newydd

Ceir manylion am y gweithredu yn CAP. Parodrwydd presennol yw alpha (mae dyrchafiad i beta wedi'i gynllunio ar gyfer y datganiad Kubernetes nesaf).

Ar gael mewn fersiwn alffa cyfle defnyddio cynllun OpenAPI v3 ar gyfer creu a chyhoeddi dogfennaeth OpenAPI ar gyfer CustomResources (CR) a ddefnyddir i ddilysu (ochr y gweinydd) K8s adnoddau wedi'u diffinio gan ddefnyddwyr (CustomResourceDefinition, CRD). Mae cyhoeddi OpenAPI ar gyfer CRD yn caniatáu i gleientiaid (e.e. kubectl) perfformio dilysiad ar eich ochr (o fewn kubectl create и kubectl apply) a dyroddi dogfennaeth yn unol â'r cynllun (kubectl explain). Manylion - yn CAP.

Logiau sy'n bodoli eisoes yn agor yn awr gyda baner O_APPEND (ond nid O_TRUNC) er mwyn osgoi colli boncyffion mewn rhai sefyllfaoedd ac er hwylustod torri boncyffion â chyfleustodau allanol i'w cylchdroi.

Hefyd yng nghyd-destun API Kubernetes, gellir nodi bod yn PodSandbox и PodSandboxStatus wedi adio maes runtime_handler i gofnodi gwybodaeth am RuntimeClass yn y pod (darllenwch fwy amdano yn y testun am Rhyddhad Kubernetes 1.12, lle yr ymddangosodd y dosbarth hwn fel fersiwn alffa), ac yn Admission Webhooks gweithredu y gallu i benderfynu pa fersiynau AdmissionReview maent yn cefnogi. Yn olaf, mae'r rheolau Derbyn Webbhooks yn awr gall fod yn gyfyngedig graddau eu defnydd gan ofodau enwau a fframweithiau clwstwr.

Cyfleusterau storio

PersistentLocalVolumes, a oedd â statws beta ers ei ryddhau K8s 1.10, cyhoeddi sefydlog (GA): nid yw'r giât nodwedd hon bellach yn anabl a bydd yn cael ei dileu yn Kubernetes 1.17.

Cyfle defnyddio newidynnau amgylchedd o'r enw API i lawr (er enghraifft, enw'r pod) ar gyfer enwau cyfeirlyfrau wedi'u gosod fel subPath, ei ddatblygu - ar ffurf maes newydd subPathExpr, a ddefnyddir bellach i bennu'r enw cyfeiriadur a ddymunir. Ymddangosodd y nodwedd i ddechrau yn Kubernetes 1.11, ond ar gyfer 1.14 arhosodd mewn statws fersiwn alffa.

Yn yr un modd â datganiad blaenorol Kubernetes, cyflwynir llawer o newidiadau sylweddol ar gyfer y CSI (Rhyngwyneb Storio Cynhwysydd) sy'n datblygu'n weithredol:

DPC

Ar gael (fel rhan o'r fersiwn alffa) cefnogaeth newid maint ar gyfer cyfeintiau CSI. Er mwyn ei ddefnyddio bydd angen i chi alluogi'r giât nodwedd o'r enw ExpandCSIVolumes, yn ogystal ag argaeledd cefnogaeth ar gyfer y llawdriniaeth hon mewn gyrrwr CSI penodol.

Nodwedd arall ar gyfer CSI yn y fersiwn alffa - cyfle cyfeirio’n uniongyrchol (h.y. heb ddefnyddio PV/PVC) at gyfeintiau CSI o fewn manyleb y pod. hwn yn dileu'r cyfyngiad ar ddefnyddio CSI fel storfa ddata o bell yn unig, yn agor drysau i'r byd iddynt cyfrolau byrhoedlog lleol. Ar gyfer defnydd (enghraifft o ddogfennaeth) rhaid ei alluogi CSIInlineVolume giât nodwedd.

Bu cynnydd hefyd yn y “mewnol” o Kubernetes yn ymwneud â CSI, nad ydynt mor weladwy i ddefnyddwyr terfynol (gweinyddwyr system) ... Ar hyn o bryd, mae datblygwyr yn cael eu gorfodi i gefnogi dwy fersiwn o bob ategyn storio: un - “yn y hen ffordd”, y tu mewn i'r codebase K8s (yn -tree), a'r ail - fel rhan o'r DPC newydd (darllenwch fwy amdano, er enghraifft, yn yma). Mae hyn yn achosi anghyfleustra dealladwy y mae angen mynd i'r afael â nhw wrth i'r DPC ei hun sefydlogi. Nid yw'n bosibl anghymeradwyo'r API o ategion mewnol (yn y goeden) oherwydd hynny polisi Kubernetes perthnasol.

Arweiniodd hyn i gyd at y ffaith bod y fersiwn alffa yn cyrraedd proses fudo cod ategyn mewnol, wedi'i weithredu fel yn-goeden, mewn ategion CSI, diolch i hynny bydd pryderon datblygwyr yn cael eu lleihau i gefnogi un fersiwn o'u ategion, a bydd cydnawsedd â hen APIs yn parhau a gellir eu datgan yn ddarfodedig yn y senario arferol. Erbyn y datganiad nesaf o Kubernetes (1.15) disgwylir y bydd yr holl ategion darparwr cwmwl yn cael eu symud, bydd y gweithrediad yn derbyn statws beta a bydd yn cael ei actifadu mewn gosodiadau K8s yn ddiofyn. Am fanylion, gw cynnig dylunio. Arweiniodd yr ymfudiad hwn hefyd at methiant o derfynau cyfaint a ddiffinnir gan ddarparwyr cwmwl penodol (AWS, Azure, TAG, Cinder).

Yn ogystal, cefnogaeth ar gyfer dyfeisiau bloc gyda CSI (CSIBlockVolume) trosglwyddo i fersiwn beta.

Nodau/Cubelet

Fersiwn Alpha wedi'i gyflwyno diweddbwynt newydd yn Kubelet, wedi'i gynllunio ar gyfer metrigau dychwelyd ar adnoddau allweddol. Yn gyffredinol, pe bai Kubelet yn flaenorol wedi derbyn ystadegau ar ddefnydd cynhwysydd gan cAdvisor, nawr mae'r data hwn yn dod o'r amgylchedd amser rhedeg cynhwysydd trwy CRI (Container Runtime Interface), ond mae cydnawsedd ar gyfer gweithio gyda fersiynau hŷn o Docker hefyd wedi'i gadw. Yn flaenorol, anfonwyd ystadegau a gasglwyd yn Kubelet trwy'r API REST, ond bellach mae pwynt terfyn wedi'i leoli yn /metrics/resource/v1alpha1. Strategaeth hirdymor datblygwyr yn cynnwys yw lleihau'r set o fetrigau a ddarperir gan Kubelet. Gyda llaw, mae'r metrigau hyn eu hunain nawr maen nhw'n galw nid “metrigau craidd”, ond “metrigau adnoddau”, ac fe'u disgrifir fel “adnoddau o'r radd flaenaf, megis cpu, a chof”.

Naws ddiddorol iawn: er gwaethaf mantais perfformiad amlwg pwynt terfyn gRPC o'i gymharu ag achosion amrywiol o ddefnyddio fformat Prometheus (gweler canlyniad un o'r meincnodau isod), roedd yn well gan yr awduron fformat testun Prometheus oherwydd arweinyddiaeth glir y system fonitro hon yn y gymuned.

“Nid yw gRPC yn gydnaws â phiblinellau monitro mawr. Bydd Endpoint ond yn ddefnyddiol ar gyfer cyflwyno metrigau i Metrics Server neu fonitro cydrannau sy'n integreiddio'n uniongyrchol ag ef. Perfformiad fformat testun Prometheus wrth ddefnyddio caching yn Metrics Server digon da i ni ffafrio Prometheus na GRPC o ystyried mabwysiadu Prometheus yn eang yn y gymuned. Unwaith y bydd fformat OpenMetrics yn dod yn fwy sefydlog, byddwn yn gallu mynd at berfformiad gRPC gyda fformat seiliedig ar broto.”

Kubernetes 1.14: Uchafbwyntiau o'r hyn sy'n newydd
Un o'r profion perfformiad cymharol o ddefnyddio fformatau gRPC a Prometheus ym mhennod newydd Kubelet ar gyfer metrigau. Ceir rhagor o graffiau a manylion eraill yn CAP.

Ymhlith newidiadau eraill:

  • Kubelet nawr (un tro) ceisio stopio cynwysyddion mewn cyflwr anhysbys cyn ailgychwyn a dileu gweithrediadau.
  • Gan ddefnyddio PodPresets yn awr i'r cynhwysydd init yn cael ei ychwanegu yr un wybodaeth ag ar gyfer cynhwysydd arferol.
  • cubelet dechrau defnyddio usageNanoCores gan ddarparwr ystadegau CRI, ac ar gyfer nodau a chynwysyddion ar Windows wedi adio ystadegau rhwydwaith.
  • Mae gwybodaeth am y system weithredu a phensaernïaeth bellach yn cael ei chofnodi mewn labeli kubernetes.io/os и kubernetes.io/arch Gwrthrychau nod (trosglwyddo o beta i GA).
  • Y gallu i nodi grŵp defnyddwyr system penodol ar gyfer cynwysyddion mewn pod (RunAsGroup, ymddangosodd yn K8s 1.11) uwch cyn beta (wedi'i alluogi yn ddiofyn).
  • du a darganfod a ddefnyddir yn cAdvisor, disodli gweithredu ar Go.

CLI

Yn cli-runtime a kubectl wedi adio -k baner ar gyfer integreiddio â addasu (gyda llaw, mae ei ddatblygiad bellach yn cael ei wneud mewn ystorfa ar wahân), h.y. i brosesu ffeiliau YAML ychwanegol o gyfeiriaduron kustomization arbennig (am fanylion ar eu defnyddio, gweler CAP):

Kubernetes 1.14: Uchafbwyntiau o'r hyn sy'n newydd
Enghraifft o ddefnydd ffeil syml addasu (mae defnydd mwy cymhleth o kustomize yn bosibl o fewn troshaenau)

Yn ogystal:

  • Wedi adio tîm newydd kubectl create cronjob, y mae ei enw yn siarad drosto'i hun.
  • В kubectl logs nawr gallwch chi cyfuno baneri -f (--follow ar gyfer ffrydio logiau) a -l (--selector ar gyfer ymholiad label).
  • ciwctl dysgir copïo ffeiliau a ddewiswyd gan gerdyn gwyllt.
  • I'r tîm kubectl wait wedi adio baner --all i ddewis yr holl adnoddau yng ngofod enw'r math o adnodd penodedig.

Eraill

Mae'r galluoedd canlynol wedi derbyn statws sefydlog (GA):

Newidiadau eraill a gyflwynwyd yn Kubernetes 1.14:

  • Nid yw polisi RBAC diofyn bellach yn caniatáu mynediad API discovery и access-review defnyddwyr heb ddilysu (heb ei ddilysu).
  • Cefnogaeth swyddogol CoreDNS sicrhawyd Linux yn unig, felly wrth ddefnyddio kubeadm i'w ddefnyddio (CoreDNS) mewn clwstwr, dim ond ar Linux y mae'n rhaid i nodau redeg (nodeSelectors yn cael eu defnyddio ar gyfer y cyfyngiad hwn).
  • Mae ffurfweddiad diofyn CoreDNS nawr defnyddiau ategyn ymlaen yn lle dirprwy. Hefyd, yn CoreDNS wedi adio parodrwyddProbe, sy'n atal cydbwyso llwyth ar godennau priodol (nad ydynt yn barod i'w gwasanaethu).
  • Yn kubeadm, ar gyfnodau init neu upload-certs, daeth yn bosibl llwythwch y tystysgrifau sydd eu hangen i gysylltu'r awyren reoli newydd i'r gyfrinach kubeadm-certs (defnyddiwch y faner --experimental-upload-certs).
  • Mae fersiwn alffa wedi ymddangos ar gyfer gosodiadau Windows cefnogaeth gMSA (Cyfrif Gwasanaeth a Reolir gan Grŵp) - cyfrifon arbennig yn Active Directory y gellir eu defnyddio gan gynwysyddion hefyd.
  • Ar gyfer G.C.E. actifadu amgryptio mTLS rhwng etcd a kube-apiserver.
  • Diweddariadau mewn meddalwedd a ddefnyddir/dibynnol: Ewch 1.12.1, CSI 1.1, CoreDNS 1.3.1, cefnogaeth Docker 18.09 yn kubeadm, a'r fersiwn API Docker lleiaf a gefnogir bellach yw 1.26.

PS

Darllenwch hefyd ar ein blog:

Ffynhonnell: hab.com

Ychwanegu sylw