Kubernetes 1.17: Jaunumi svarÄ«gākie

Vakar, 9. decembrī, notika nākamais Kubernetes izlaidums - 1.17. Saskaņā ar tradīciju, kas ir izveidojusies mūsu emuāram, mēs runājam par būtiskākajām izmaiņām jaunajā versijā.

Kubernetes 1.17: Jaunumi svarÄ«gākie

Å Ä« materiāla sagatavoÅ”anai izmantotā informācija ir ņemta no oficiālā paziņojuma, Kubernetes uzlabojumu izsekoÅ”anas tabulas, IZMAIŅA-1.17 un saistÄ«tie jautājumi, izvilkÅ”anas pieprasÄ«jumi un Kubernetes uzlaboÅ”anas priekÅ”likumi (KEP). Kas jauns?..

Topoloģiju apzinoŔa marŔrutēŔana

Kubernetes kopiena Å”o funkciju ir gaidÄ«jusi jau ilgu laiku - Pakalpojumu marÅ”rutÄ“Å”ana ar topoloÄ£iju. Ja KEP tā izcelsme ir 2018. gada oktobrÄ«, un oficiālā UzlaboÅ”ana ā€” Pirms 2 gadiem parastie jautājumi (piemēram tā) - un vēl dažus gadus vecāks...

Vispārējā ideja ir nodroÅ”ināt iespēju ieviest ā€œlokāloā€ marÅ”rutÄ“Å”anu Kubernetes pakalpojumiem. ā€œLokalitāteā€ Å”ajā gadÄ«jumā nozÄ«mē ā€œto paÅ”u topoloÄ£isko lÄ«meniā€ (topoloÄ£ijas lÄ«menis), kas var bÅ«t:

  • mezgls ir identisks pakalpojumiem,
  • tas pats servera plaukts,
  • tajā paŔā reÄ£ionā
  • tas pats mākoņa pakalpojumu sniedzējs,
  • ...

Å Ä«s funkcijas izmantoÅ”anas piemēri:

  • ietaupÄ«jumi no satiksmes mākoņu instalācijās ar vairākām pieejamÄ«bas zonām (multi-AZ) - sk. svaiga ilustrācija izmantojot piemēru par satiksmi no tā paÅ”a reÄ£iona, bet dažādiem AZ AWS;
  • mazāks veiktspējas latentums/labāka caurlaidspēja;
  • sadalÄ«ts pakalpojums, kurā ir lokāla informācija par mezglu katrā shardā;
  • fluentd (vai analogu) izvietoÅ”ana vienā mezglā ar lietojumprogrammām, kuru žurnāli tiek vākti;
  • ...

Šādu marÅ”rutÄ“Å”anu, kas ā€œzinaā€ par topoloÄ£iju, sauc arÄ« par tÄ«kla afinitāti ā€“ pēc analoÄ£ijas ar mezgla afinitāte, pod afinitāte/antiafinitāte vai parādÄ«jās ne tik sen TopoloÄ£iju apzinoÅ”a apjoma plānoÅ”ana (un Apjoma nodroÅ”ināŔana). PaÅ”reizējais Ä«stenoÅ”anas lÄ«menis ServiceTopology Kubernetes - alfa versija.

PlaŔāku informāciju par funkcijas darbību un to, kā to jau varat izmantot, lasiet Šis raksts no viena no autoriem.

IPv4/IPv6 divu steku atbalsts

Ievērojams progress fiksēts citā tÄ«kla funkcijā: vienlaicÄ«gs atbalsts diviem IP skursteņiem, kas pirmo reizi tika ieviests K8s 1.16. Jo Ä«paÅ”i jaunajā laidienā tika veiktas Ŕādas izmaiņas:

  • kube starpniekserverÄ« Ä«stenota vienlaicÄ«gas darbÄ«bas iespēja abos režīmos (IPv4 un IPv6);
  • Š² Pod.Status.PodIPs parādÄ«jās lejupvērstas API atbalsts (tajā paŔā laikā kā /etc/hosts tagad tie pieprasa saimniekdatoram pievienot IPv6 adresi);
  • divu skursteņu atbalsts KIND (Kubernetes IN Docker) un kubeadm;
  • atjaunināti e2e testi.

Kubernetes 1.17: Jaunumi svarÄ«gākie
Ilustrācija izmantojot divu steku IPV4/IPv6 KIND

Progress CSI jomā

Pasludināts par stabilu topoloģijas atbalsts uz CSI balstītai krātuvei, pirmo reizi ieviesta K8s 1.12.

IniciatÄ«va priekÅ” apjoma spraudņu migrÄ“Å”ana uz CSI Sākot no CSI migrācija - sasniegta beta versija. Å Ä« funkcija ir bÅ«tiska, lai tulkotu esoÅ”os krātuves spraudņus (kokā) uz modernu interfeisu (CSI, ārpus koka) neredzams Kubernetes galalietotājiem. Klasteru administratoriem bÅ«s tikai jāiespējo CSI migrācija, pēc kuras esoÅ”ie statusa resursi un darba slodzes turpinās ā€œtikai darbotiesā€... bet izmantojot jaunākos CSI draiverus, nevis novecojuÅ”os, kas iekļauti Kubernetes kodolā.

Šobrīd AWS EBS draiveru migrācija ir gatava beta versijā (kubernetes.io/aws-ebs) un GCE PD (kubernetes.io/gce-pd). Prognozes citām noliktavām ir Ŕādas:

Kubernetes 1.17: Jaunumi svarÄ«gākie

Mēs runājām par to, kā ā€œtradicionālaisā€ krātuves atbalsts K8s nonāca CSI Å is raksts. Un CSI migrācijas pāreja uz beta statusu ir veltÄ«ta atseviŔķa publikācija projekta emuārā.

Turklāt vēl viena nozÄ«mÄ«ga funkcionalitāte saistÄ«bā ar CSI, kuras izcelsme (alfa ievieÅ”ana) ir K1.17s 8, sasniedza beta statusu (t.i., iespējota pēc noklusējuma) Kubernetes 1.12 laidienā. momentuzņēmumu izveide un atveseļoÅ”anās no tiem. Starp izmaiņām, kas veiktas Kubernetes Volume Snapshot ceļā uz beta versiju:

  • sadalot CSI ārējā momentuzņēmēja blakusvāģi divos kontrolleros,
  • pievienots noslēpums dzÄ“Å”anai (dzÄ“Å”anas noslēpums) kā anotāciju apjoma momentuzņēmuma saturam,
  • jauns finālists (finalizētājs) lai novērstu momentuzņēmuma API objekta dzÄ“Å”anu, ja ir atlikuÅ”i savienojumi.

1.17 izlaiŔanas brīdī Ŕo līdzekli atbalsta trīs CSI draiveri: GCE Persistent Disk CSI Driver, Portworx CSI Driver un NetApp Trident CSI Driver. Sīkāku informāciju par tā ievieŔanu un izmantoŔanu var atrast Ŕī publikācija emuārā.

Mākoņu nodroÅ”inātāja etiÄ·etes

EtiÄ·etes, kas automātiski tiek pieŔķirti izveidotajiem mezgliem un sējumiem atkarÄ«bā no izmantotā mākoņa nodroÅ”inātāja, ir pieejami Kubernetes kā beta versija ļoti ilgu laiku - kopÅ” K8s 1.2 izlaiÅ”anas (2016. gada aprÄ«lis!). Ņemot vērā to plaÅ”o izmantoÅ”anu tik ilgi, izstrādātāji nolēma, ka ir pienācis laiks pasludināt lÄ«dzekli par stabilu (GA).

Tāpēc tie visi tika attiecīgi pārdēvēti (pēc topoloģijas):

  • 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

... bet joprojām ir pieejami ar vecajiem nosaukumiem (atgriezeniskajai saderÄ«bai). Tomēr visiem administratoriem ieteicams pārslēgties uz paÅ”reizējām etiÄ·etēm. SaistÄ«tā dokumentācija K8s ir atjaunināts.

Kubeadm strukturēta izvade

Pirmo reizi prezentēts alfa versijā strukturēta izvade utilītai kubeadm. Atbalstītie formāti: JSON, YAML, Go veidne.

Motivācija Ŕīs funkcijas ievieÅ”anai (saskaņā ar KEP) ir:

Lai gan Kubernetes var izvietot manuāli, de facto (ja ne de jure) standarts Å”ai darbÄ«bai ir kubeadm izmantoÅ”ana. Populāri sistēmu pārvaldÄ«bas rÄ«ki, piemēram, Terraform, Kubernetes izvietoÅ”anai izmanto kubeadm. Plānotie Cluster API uzlabojumi ietver saliekamu pakotni Kubernetes sāknÄ“Å”anai ar kubeadm un mākoņa init.

Bez strukturētas izvades pat visnekaitīgākās izmaiņas no pirmā acu uzmetiena var sabojāt Terraform, Cluster API un citu programmatūru, kas izmanto kubeadm rezultātus.

MÅ«su tuvākajos plānos ietilpst atbalsts (strukturētas izvades veidā) Ŕādām kubeadm komandām:

  • alpha certs
  • config images list
  • init
  • token create
  • token list
  • upgrade plan
  • version

JSON atbildes uz komandu ilustrācija 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": "The default bootstrap token generated by 'kubeadm init'.",
    "extraGroups": [
      "system:bootstrappers:kubeadm:default-node-token"
    ]
  },
  "raw": "Rm9yIHRoZSBhY3R1YWwgb3V0cHV0IG9mIHRoZSAia3ViZWFkbSBpbml0IiBjb21tYW5kLCBwbGVhc2Ugc2VlIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2FrdXR6LzdhNjg2ZGU1N2JmNDMzZjkyZjcxYjZmYjc3ZDRkOWJhI2ZpbGUta3ViZWFkbS1pbml0LW91dHB1dC1sb2c="
}

Citu inovāciju stabilizācija

Kopumā Kubernetes 1.17 izlaiÅ”ana notika ar devÄ«zi ā€œstabilitāte" To veicināja fakts, ka tajā ir daudzas funkcijas (to kopējais skaits ir 14) saņēma GA statusu. Starp viņiem:

Citas izmaiņas

Pilns Kubernetes 1.17 jauninājumu saraksts, protams, neaprobežojas tikai ar iepriekŔ uzskaitītajiem. Šeit ir daži citi (un pilnīgāku sarakstu skatiet CHANGELOG):

  • Pēdējā laidienā piedāvātā funkcija ir sasniegusi beta versiju RunAsUserName logiem;
  • lÄ«dzÄ«gas izmaiņas piemeklēja EndpointSlice API (arÄ« no K8s 1.16), taču pagaidām Å”is risinājums Endpoint API veiktspējas/mērogojamÄ«bas uzlaboÅ”anai pēc noklusējuma nav iespējots;
  • podi tagad ir ļoti svarÄ«gi klastera darbÄ«bai var izveidot ne tikai vārdu telpās kube-system (sÄ«kāku informāciju skatiet dokumentācijā par Ierobežot Prioritātes klases patēriņu);
  • jauna iespēja kubelet - --reserved-cpus ā€” ļauj skaidri definēt sistēmai rezervēto CPU sarakstu;
  • par kubectl logs uzrādÄ«ts jauns karogs --prefix, katrai žurnāla rindai pievienojot podziņas un avota konteinera nosaukumu;
  • Š² label.Selector piebilda RequiresExactMatch;
  • visi konteineri kube-dns tagad darbojas ar mazākām privilēģijām;
  • hiperkube sadalÄ«ts atseviŔķā GitHub repozitorijā un vairs netiks iekļauts Kubernetes laidienos;
  • daudz uzlabota veiktspēja kube starpniekserveris portiem, kas nav UDP.

Atkarības izmaiņas:

  • CoreDNS versija, kas iekļauta kubeadm, ir 1.6.5;
  • crictl versija atjaunināta uz v1.16.1;
  • CSI 1.2.0;
  • etcd 3.4.3;
  • Jaunākā pārbaudÄ«tā Docker versija, kas jaunināta uz 19.03;
  • Minimālā Go versija, kas nepiecieÅ”ama, lai izveidotu Kubernetes 1.17, ir 1.13.4.

PS

Lasi arī mūsu emuārā:

Avots: www.habr.com

Pievieno komentāru