Kubernetes 1.17: peamiste uuenduste ĂŒlevaade.

Eile, 9. detsember, leidis aset vĂ€lja tuli uus Kubernetes'i versioon — 1.17. Meie blogi traditsioonide kohaselt rÀÀgime olulisematest muudatustest selles uuenduses.

Kubernetes 1.17: peamiste uuenduste ĂŒlevaade.

KÀesoleva materjali koostamiseks kasutatud teave on saadud ametlikust teadaandest, Kubernetes'i tÀiustuste jÀlgimise tabelist, CHANGELOG-1.17 ning vastavatest probleemidest, tÔukeavaldustest ja Kubernetes'i tÀiustuse ettepanekutest (KEP). Nii et, mis on uut?..

Toptoloogia arvestusega suunamine

Kubernetes'i kogukonnas on selle funktsiooni jĂ€rele juba pikka aega oodatud — Topology-aware service routing. Kui KEP-is mis algas 2018. aasta oktoobris, ja ametlik tĂ€iustus — 2 aastat tagasi, samas kui tavalised probleemid (nagu selle) — on veel vanemad


Üldine idee on pakkuda vĂ”imalust rakendada "kohalikku" suunamist Kubernetes'is asuvate teenuste jaoks. "Kohalikus" kontekstis tĂ€hendab see "samal topoloogilisel tasemel" (topology level), milleks vĂ”ib olla:

  • samal sĂ”lmel teenused,
  • sama serveririiul,
  • sama piirkond,
  • sama pilveteenuse pakkuja,
  • 


Sellise funktsiooni kasutamise nÀited:

  • kulu kokkuhoid pilvepaigaldistes, kus on mitu kĂ€ttesaadavusala (multi-AZ) — vt. vĂ€rsket illustratsiooni ĂŒhe piirkonna, kuid erinevate AZ-de kohta AWS-is;
  • vĂ€iksemad latentsusprobleemid jĂ”udluses / parem lĂ€bilaskevĂ”ime;
  • jaotatud teenus, millel on kohaliku sĂ”lme teave igas shardis;
  • fluentd (vĂ”i sarnaste) paigutamine ĂŒhe sĂ”lme juurde rakendustega, mille logisid kogutakse;
  • 


Seda topoloogia teadlikku suunamist nimetatakse sageli vĂ”rgu kĂŒlgetĂ”mbejĂ”uks — sarnaselt node affinity, pod affinity / anti-affinity vĂ”i hiljuti ilmunud Topology-Aware Volume Scheduling Volume Provisioning (ja ). Praegune rakendustaseServiceTopology Kubernetes'is — alfa versioon. KĂ€esolevas funktsiooni struktuuris ja selle kasutamisvĂ”imalustes saate lugeda

ĂŒhe autori poolt. selles artiklis Kahepoolsuse IPV4/IPV6 tugi

Oluline edusamm

on fikseeritud teises vÔrgu funktsiooni aspektis: kahe IP-kihi samasugune tugi, mis esmakordselt tutvustati K8s 1.16 . EelkÔige tÔi uus versioon kaasa jÀrgmised muudatused:kube-proxy's

  • vĂ”ime töötada samal ajal mĂ”lemas reĆŸiimis (IPv4 ja IPv6); rakendatud Pod.Status.PodIPs
  • ja toetust downward API-le (samal ajal nĂ”uavad nad nĂŒĂŒd, et host lisaks ka IPv6-aadressi); on toetust kahes kihis /etc/hosts (Kubernetes IN Docker) ja
  • uuendatud e2e-testide. KIND (Kubernetes IN Docker) Đž kubeadm;
  • ĐŸĐ±ĐœĐŸĐČĐ»Ń‘ĐœĐœŃ‹Đ” e2e-тДсты.

Kubernetes 1.17: peamiste uuenduste ĂŒlevaade.
Illustreerimine kahekordse IPV4/IPv6 kasutamine KINDis

CSI edusammud

Kinnitatud stabiilseks topoloogiate tugi CSI-pÔhiste salvestusruumide jaoks, mis esmakordselt tutvustati K8s 1.12.

Algatus mahtpluginide migreerimisele CSI-le — CSI migratsioon on jĂ”udnud beetaversiooni. See funktsioon on kriitilise tĂ€htsusega olemasolevate salvestuspluginide viimiseks (in-tree) kaasaegsele liidesele (CSI, out-of-tree) Kubernetesi lĂ”ppkasutajatele mĂ€rkamatult. Klastri administraatoritel on piisav, et aktiveerida CSI migratsioon, pĂ€rast mida olemasolevad stateful-resursid ja töökoormused töötavad endiselt "lihtsalt"
 kuid nĂŒĂŒd kaasaegsete CSI-draiveritega, mitte vananenud, tuuma Kubernetesesse kuuluvatega.

Beetaversioonis on nĂŒĂŒd saadaval migreerimine AWS EBS-draiveritele (kubernetes.io/aws-ebs) ja GCE PD (kubernetes.io/gce-pd). Muude salvestuslahenduste osas on prognoosid jĂ€rgmised:

Kubernetes 1.17: peamiste uuenduste ĂŒlevaade.

Me rÀÀkisime, kuidas "traditsiooniline" salvestuslahenduste tugi K8s jÔudis CSI-le selles artiklis. CSI migratsiooni beetaversiooni siirdumist kÀsitleb eraldi postitus projekti blogis.

Lisaks on Kubernetes 1.17 vĂ€ljaandes beetaversiooniks (st vaikimisi lubatud) jĂ”udnud teine olulise funktsionaalsus, mille algus (alfa-realiseerimine) on K8s 1.12, — snaipshotide loomine ja nende taastamine. Kubernetes Volume Snapshotis beetaversiooni suunas tehtud muudatuste hulka kuulub:

  • CSI external-snapshotteri sidecar'i jagamine kaheks kontrolleriks,
  • lisatud eemaldamissekreti (deletion secret) salvestusmahu snapshot'i sisu annotatsioonina,
  • uus finilisaator (finalizer) API-objekti snapshot'i eemaldamise vĂ€ltimiseks, kui alles on jÀÀnud seoseid.

1.17 vÀljaande ajal toetatakse seda funktsionaalsust kolme CSI-draiveriga: GCE Persistent Disk CSI Driver, Portworx CSI Driver ja NetApp Trident CSI Driver. Selle rakendamise ja kasutamise kohta saab rohkem lugeda selle vÀljaande blogis.

Cloud Provider Labels

Sildid, mis mÀÀratakse automaatselt loodud sĂ”lmedele ja mahtudele sĂ”ltuvalt kasutatavast pilvteenuse pakkujast, on Kuberneteses juba pikka aega beetaversioonina saadaval — alates K8s 1.2 vĂ€ljaandest (aprill 2016!). Arvestades nende laialdast kasutamist nii kaua, on arendajad otsustasid, et on aeg kuulutada funktsioon stabiilseks (GA).

SeetĂ”ttu on kĂ”ik need ĂŒmber nimetatud vastavalt (topoloogiate jĂ€rgi):

  • beta.kubernetes.io/instance-type → node.kubernetes.io/instance-type
  • failure-domain.beta.kubernetes.io/zone → topology.kubernetes.io/zone
  • failure-domain.beta.kubernetes.io/region → topology.kubernetes.io/region


 kuid siiski on nad kergesti kĂ€ttesaadavad ka oma vanade nimede kaudu (tagasiĂŒhilduvuse huvides). Siiski soovitatakse kĂ”igil administraatoritel minna ĂŒle praegustele siltidele. Asjakohane dokumentatsioon K8s on uuendatud.

Kubeadm struktuurne vÀljund

Alfa versioonis tutvustati esmakordselt kubeadm tööriista struktuurne vÀljund. Toetatud formaadid: JSON, YAML, Go-mall.

Selle funktsiooni rakendamise motivatsioon (vastavalt KEP-is) on jÀrgmine:

Kuigi Kubernetes vĂ”ib olla kĂ€sitsi juurutatud, on de facto (kui mitte de jure) standard selle teostamiseks kubeadm’i kasutamine. Populaarsed sĂŒsteemihalduse tööriistad nagu Terraform toetuvad kubeadm’ile Kubernetes’i juurutamiseks. Planeeritud tĂ€iustused Cluster API-sse hĂ”lmavad kubeadm’i ja cloud-init’i abil Kubernetes’i bootstrappimiseks mĂ”eldud kompakti paketti.

Ilma struktuurse vĂ€ljundita vĂ”ivad isegi kĂ”ige sĂŒĂŒtumad esmapilgul muudatused kahjustada Terraform’i, Cluster API-d ja muid tarkvarasid, mis kasutavad kubeadm’i vĂ€ljundit.

LĂ€hiajal on plaanis toetada (struktuurse vĂ€ljundina) jĂ€rgmisi kubeadm’i kĂ€sklusi:

  • alpha certs
  • config images list
  • — algne ettevalmistus enne juurutamist, siin vĂ”ib olla kĂ”ike: sĂ”ltuvuste allalaadimist, saladuste lahtipakkimist ja muud.
  • token create
  • token list
  • upgrade plan
  • version

JSON-vastuse illustreerimine kÀsule 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": "Kubeadm init’iga genereeritud vaikimisi bootstrapi token.",
    "extraGroups": [
      "system:bootstrappers:kubeadm:default-node-token"
    ]
  },
  "raw": "Rm9yIHRoZSBhY3R1YWwgb3V0cHV0IG9mIHRoZSAia3ViZWFkbSBpbml0IiBjb21tYW5kLCBwbGVhc2Ugc2VlIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2FrdXR6LzdhNjg2ZGU1N2JmNDMzZjkyZjcxYjZmYjc3ZDRkOWJhI2ZpbGUta3ViZWFkbS1pbml0LW91dHB1dC1sb2c="
}

Muude uuenduste stabiilsus

Üldiselt toimus Kubernetes 1.17 vĂ€ljaanne motoga «Stabiilsus». Sellele aitas kaasa asjaolu, et vĂ€ga paljud funktsioonid said GA staatuse (nende koguarv — 14) jĂ€rgmiste seas:

Muud muudatused

Kubernetes 1.17 tÀielik uuenduste nimekiri ei piirdu kindlasti eespooltoodud punktidega. Siin on mÔned muud neist (ja tÀielik nimekiri - vt. MUUDATUSTE LOGI):

  • beta versiooniks «arendatud» eelmisel vĂ€ljaandes esitatud funktsioon RunAsUserName Windowsi jaoks.;
  • samalaadne muudatus on jĂ”udnud EndpointSlice API (ka K8s 1.16-st), kuid praegu ei ole see lahendus Endpoint API jĂ”udluse / skaleeritavuse parandamiseks vaikimisi aktiveeritud;
  • klastri töötamiseks kriitilised pod'id vĂ”ivad nĂŒĂŒd olla loodud mitte ainult nimede ruumides kubectl -n kube-system edit cm kubelet-config-1.16 (detailid vt dokumentatsioonist Limit Priority Class tarbimise);
  • uus valik kubelet'i jaoks - --reserved-cpus – lubab selgelt mÀÀratleda CPU nimekirja, mis on sĂŒsteemile reserveeritud;
  • jaoks lipud esitati uus lipp --prefix, lisades pod'i ja allika konteineri nime igale logireale;
  • ja label.Selector lisanud RequiresExactMatch;
  • kĂ”ik kube-dns'i konteinerid on nĂŒĂŒd kĂ€ivitatud madalamate privileegidega;
  • hyperkube on eraldi GitHub'i hoidlas, ei sisaldu enam Kubernetes'i vĂ€ljalasemetes;
  • oluliselt parandatud kube-proxy jĂ”udlust mitte-UDP portide jaoks. SĂ”ltuvuste muudatused:

CoreDNS versioon kubeadm's - 1.6.5;

  • crictl versioon on uuendatud v1.16.1-le;
  • CSI 1.2.0;
  • etcd 3.4.3;
  • viimane kontrollitud Docker'i versioon on suurendatud 19.03-ni;
  • minimaalne Go versioon, mis on vajalik Kubernetes 1.17 koostamiseks, on 1.13.4.
  • Kubernetes 1.15: peamiste uuenduste ĂŒlevaade

P.S.

Lugege ka meie blogist:

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster