Kubernetes 1.16: Akopọ ti awọn imotuntun akọkọ

Kubernetes 1.16: Akopọ ti awọn imotuntun akọkọ

Loni, Wednesday, yoo waye itusilẹ atẹle ti Kubernetes - 1.16. Gẹgẹbi aṣa ti o ti ni idagbasoke fun bulọọgi wa, eyi ni akoko iranti aseye kẹwa ti a n sọrọ nipa awọn iyipada pataki julọ ninu ẹya tuntun.

Alaye ti a lo lati mura ohun elo yii ni a gba lati Kubernetes awọn ilọsiwaju titele awọn tabili, CHANGELOG-1.16 ati awọn ọran ti o jọmọ, awọn ibeere fa, ati Awọn igbero Imudara Kubernetes (KEP). Nitorina, jẹ ki a lọ! ..

Awọn apa

Nọmba nla nitootọ ti awọn imotuntun akiyesi (ni ipo ẹya alpha) ni a gbekalẹ ni ẹgbẹ ti awọn apa iṣupọ K8s (Kubelet).

Ni akọkọ, ti a npe ni «ephemeral awọn apoti» (Awọn apoti Ephemeral), ti a ṣe lati ṣe simplify awọn ilana ti n ṣatunṣe aṣiṣe ni awọn pods. Ẹrọ tuntun n gba ọ laaye lati ṣe ifilọlẹ awọn apoti pataki ti o bẹrẹ ni aaye orukọ ti awọn adarọ-ese ti o wa tẹlẹ ati gbe laaye fun igba diẹ. Idi wọn ni lati ṣe ajọṣepọ pẹlu awọn adarọ-ese miiran ati awọn apoti lati le yanju eyikeyi awọn iṣoro ati yokokoro. Aṣẹ tuntun ti jẹ imuse fun ẹya yii kubectl debug, iru ni kókó si kubectl exec: nikan dipo ṣiṣe ilana kan ninu apo eiyan (bi ninu exec) o gbe eiyan sinu podu. Fun apẹẹrẹ, aṣẹ yii yoo so apoti tuntun pọ mọ adarọ ese kan:

kubectl debug -c debug-shell --image=debian target-pod -- bash

Awọn alaye nipa awọn apoti ephemeral (ati awọn apẹẹrẹ ti lilo wọn) ni a le rii ninu KEP ti o baamu. Imuse lọwọlọwọ (ni K8s 1.16) jẹ ẹya alpha kan, ati laarin awọn ibeere fun gbigbe rẹ si ẹya beta ni “idanwo Ephemeral Containers API fun o kere ju awọn idasilẹ 2 ti [Kubernetes].”

NB: Ni ipilẹ rẹ ati paapaa orukọ rẹ, ẹya naa dabi ohun itanna ti o wa tẹlẹ kubectl-yokokoronipa eyiti a tẹlẹ kọ. O nireti pe pẹlu dide ti awọn apoti ephemeral, idagbasoke ti ohun itanna ita lọtọ yoo dẹkun.

Atunse miiran - PodOverhead - apẹrẹ lati pese siseto fun oniṣiro awọn idiyele oke fun awọn podu, eyi ti o le yatọ gidigidi da lori akoko asiko ti a lo. Fun apẹẹrẹ, awọn onkọwe KEP yii Abajade ni Awọn apoti Kata, eyiti o nilo ṣiṣe ekuro alejo, oluranlowo kata, eto init, ati bẹbẹ lọ. Nigbati oke ba tobi pupọ, ko le ṣe akiyesi rẹ, eyiti o tumọ si pe o nilo lati wa ọna lati ṣe akiyesi rẹ fun awọn ipin siwaju sii, eto, ati bẹbẹ lọ. Lati lo ninu rẹ PodSpec aaye kun Overhead *ResourceList (fiwera pẹlu data in RuntimeClass, ti eyan ba lo).

Miiran ohun akiyesi ĭdàsĭlẹ ni ipade topology faili (Oluṣakoso Topology Node), ti a ṣe lati ṣe iṣọkan ọna lati ṣe atunṣe-itanran ipinfunni ti awọn ohun elo hardware fun orisirisi awọn irinše ni Kubernetes. Ipilẹṣẹ yii jẹ idari nipasẹ iwulo dagba ti ọpọlọpọ awọn eto igbalode (lati aaye ti awọn ibaraẹnisọrọ, ẹkọ ẹrọ, awọn iṣẹ inawo, ati bẹbẹ lọ) fun ṣiṣe iṣiro iṣẹ ṣiṣe giga ati idinku awọn idaduro ni ipaniyan awọn iṣẹ, fun eyiti wọn lo Sipiyu ti ilọsiwaju ati hardware isare agbara. Iru awọn iṣapeye ni Kubernetes ti wa titi di isisiyi o ṣeun si awọn paati ti o yatọ (oluṣakoso Sipiyu, oluṣakoso ẹrọ, CNI), ati ni bayi wọn yoo ṣafikun wiwo inu inu kan ṣoṣo ti o ṣe iṣọkan ọna ati rọrun asopọ ti iru tuntun - eyiti a pe ni topology- mọ - irinše lori Kubelet ẹgbẹ. Awọn alaye - ni KEP ti o baamu.

Kubernetes 1.16: Akopọ ti awọn imotuntun akọkọ
Topology Manager paati aworan atọka

Ẹya ti o tẹle - yiyewo awọn apoti nigba ti won nṣiṣẹ (ibere ibere). Bi o ṣe mọ, fun awọn apoti ti o gba akoko pipẹ lati ṣe ifilọlẹ, o nira lati gba ipo imudojuiwọn: wọn “pa” ṣaaju ki wọn to bẹrẹ iṣẹ gangan, tabi wọn pari ni titiipa fun igba pipẹ. Ayẹwo tuntun (ti ṣiṣẹ nipasẹ ẹnu-ọna ẹya ti a pe StartupProbeEnabled) fagilee - tabi dipo, da duro - ipa ti awọn sọwedowo miiran titi di akoko ti podu ti pari ṣiṣe. Fun idi eyi, ẹya ara ẹrọ ti a npe ni akọkọ pod-ibẹrẹ liveness-iwadi holdoff. Fun awọn adarọ-ese ti o gba akoko pipẹ lati bẹrẹ, o le ṣe ibo ibo fun ipinlẹ ni awọn aaye arin akoko kukuru.

Ni afikun, ilọsiwaju fun RuntimeClass wa lẹsẹkẹsẹ ni ipo beta, fifi atilẹyin kun fun “awọn iṣupọ orisirisi”. C Ṣiṣeto Kilasi Runtime Bayi ko ṣe pataki rara fun ipade kọọkan lati ni atilẹyin fun Kilasi Runtime kọọkan: fun awọn adarọ-ese o le yan Kilasi Runtime laisi ironu nipa topology iṣupọ. Ni iṣaaju, lati ṣaṣeyọri eyi - ki awọn adarọ-ese pari lori awọn apa pẹlu atilẹyin fun ohun gbogbo ti wọn nilo - o jẹ dandan lati fi awọn ofin ti o yẹ fun NodeSelector ati awọn ifarada. IN Bọtini O sọrọ nipa awọn apẹẹrẹ ti lilo ati, dajudaju, awọn alaye imuse.

Nẹtiwọki

Awọn ẹya pataki nẹtiwọki meji ti o han fun igba akọkọ (ni ẹya alpha) ni Kubernetes 1.16 jẹ:

  • .Оддержка akopọ nẹtiwọki meji - IPv4/IPv6 - ati “oye” ti o baamu ni ipele ti awọn adarọ-ese, awọn apa, awọn iṣẹ. O pẹlu IPv4-to-IPv4 ati IPv6-to-IPv6 interoperability laarin awọn adarọ-ese, lati awọn adarọ-ese si awọn iṣẹ ita, awọn imuse itọkasi (laarin Afara CNI, PTP CNI ati Host-Local IPAM plugins), bakannaa yiyipada Ibamu pẹlu awọn iṣupọ Kubernetes nṣiṣẹ IPv4 tabi IPv6 nikan. Awọn alaye imuse wa ninu Bọtini.

    Apeere ti iṣafihan awọn adirẹsi IP ti awọn oriṣi meji (IPv4 ati IPv6) ninu atokọ awọn adarọ-ese:

    kube-master# kubectl get pods -o wide
    NAME               READY     STATUS    RESTARTS   AGE       IP                          NODE
    nginx-controller   1/1       Running   0          20m       fd00:db8:1::2,192.168.1.3   kube-minion-1
    kube-master#

  • API Tuntun fun Ipari - EndpointSlice API. O yanju awọn ọran iṣẹ / iwọn iwọn ti API Endpoint ti o wa ti o ni ipa lori ọpọlọpọ awọn paati ninu ọkọ ofurufu iṣakoso (apiserver, bbl, oludari-ipari, kube-proxy). API tuntun naa ni yoo ṣafikun si ẹgbẹ Awari API ati pe yoo ni anfani lati sin awọn ẹgbẹẹgbẹrun awọn aaye ipari ẹhin lori iṣẹ kọọkan ninu iṣupọ kan ti o ni ẹgbẹẹgbẹrun awọn apa. Lati ṣe eyi, Iṣẹ kọọkan ti ya aworan si awọn nkan N EndpointSlice, ọkọọkan eyiti nipasẹ aiyipada ko ni diẹ sii ju awọn aaye ipari 100 (iye jẹ atunto). API EndpointSlice yoo tun pese awọn aye fun idagbasoke iwaju rẹ: atilẹyin fun ọpọlọpọ awọn adirẹsi IP fun podu kọọkan, awọn ipinlẹ tuntun fun awọn aaye ipari (kii ṣe nikan Ready и NotReady), subsetting ìmúdàgba fun endpoints.

Eyi ti a gbekalẹ ninu idasilẹ kẹhin ti de ẹya beta asepari, oniwa service.kubernetes.io/load-balancer-cleanup ati so si kọọkan iṣẹ pẹlu iru LoadBalancer. Ni akoko piparẹ iru iṣẹ bẹ, o ṣe idiwọ piparẹ gangan ti awọn oluşewadi titi “isọtọ” ti gbogbo awọn orisun iwọntunwọnsi ti o yẹ ti pari.

API Machinery

“Ile-iṣẹlẹ imuduro” gidi wa ni agbegbe olupin Kubernetes API ati ibaraenisepo pẹlu rẹ. Eleyi ṣẹlẹ ibebe ọpẹ si gbigbe si ipo iduroṣinṣin awọn ti ko nilo ifihan pataki CustomResourceDefinitions (CRD), eyiti o ti ni ipo beta lati awọn ọjọ ti o jinna ti Kubernetes 1.7 (ati eyi jẹ Oṣu Karun ọdun 2017!). Iduroṣinṣin kanna wa si awọn ẹya ti o jọmọ:

  • "awọn orisun abẹlẹ" bẹbẹ /status и /scale fun CustomResources;
  • iyipada awọn ẹya fun CRD, da lori ita webhook;
  • laipe gbekalẹ (ni K8s 1.15) aiyipada iye (aiyipada) ati yiyọ aaye laifọwọyi (Pruning) fun CustomResources;
  • anfaani lilo OpenAPI v3 schema lati ṣẹda ati ṣe atẹjade awọn iwe OpenAPI ti a lo lati fọwọsi awọn orisun CRD ni ẹgbẹ olupin.

Ilana miiran ti o ti di faramọ si awọn alakoso Kubernetes: gbigba webhook - tun wa ni ipo beta fun igba pipẹ (niwon K8s 1.9) ati pe o ti kede ni iduroṣinṣin.

Awọn ẹya meji miiran ti de beta: olupin-ẹgbẹ waye и wo awọn bukumaaki.

Ati awọn nikan significant ĭdàsĭlẹ ni Alpha version wà ifagile lati SelfLink - URI pataki kan ti o nsoju ohun kan pato ati jije apakan ti ObjectMeta и ListMeta (ie apakan ti eyikeyi ohun ni Kubernetes). Kí nìdí tí wọ́n fi ń pa á tì? Iwuri ni ọna ti o rọrun awọn ohun bi isansa ti awọn idi gidi (agbara) fun aaye yii lati tun wa. Awọn idi deede diẹ sii ni lati mu iṣẹ ṣiṣe dara (nipa yiyọ aaye ti ko wulo) ati lati ṣe irọrun iṣẹ ti jeneriki-apiserver, eyiti o fi agbara mu lati mu iru aaye kan ni ọna pataki (eyi nikan ni aaye ti a ṣeto ni taara ṣaaju ohun naa. ti wa ni serialized). Ogbologbo otitọ (laarin beta) SelfLink yoo ṣẹlẹ nipasẹ ẹya Kubernetes 1.20, ati ipari - 1.21.

Ibi ipamọ data

Iṣẹ akọkọ ni agbegbe ibi ipamọ, bi ninu awọn idasilẹ iṣaaju, ni a ṣe akiyesi ni agbegbe naa CSI atilẹyin. Awọn ayipada akọkọ nibi ni:

  • fun igba akọkọ (ni ẹya alpha) farahan Atilẹyin ohun itanna CSI fun awọn apa oṣiṣẹ Windows: ọna lọwọlọwọ ti ṣiṣẹ pẹlu ibi ipamọ yoo tun rọpo awọn afikun igi-igi ni Kubernetes mojuto ati awọn afikun FlexVolume lati Microsoft ti o da lori Powershell;

    Kubernetes 1.16: Akopọ ti awọn imotuntun akọkọ
    Eto fun imuse awọn afikun CSI ni Kubernetes fun Windows

  • anfaani yiyipada awọn iwọn didun CSI, ti a ṣe pada ni K8s 1.12, ti dagba si ẹya beta;
  • Iru “igbega” kan (lati alpha si beta) jẹ aṣeyọri nipasẹ agbara lati lo CSI lati ṣẹda awọn iwọn ephemeral agbegbe (CSI Opopo Support).

Agbekale ninu ẹya ti tẹlẹ ti Kubernetes iwọn didun ti cloning iṣẹ (lilo PVC tẹlẹ bi DataSource lati ṣẹda PVC tuntun) tun ti gba ipo beta bayi.

Eto iṣeto

Awọn ayipada akiyesi meji si ṣiṣe eto (mejeeji ni alfa):

  • EvenPodsSpreading - anfani lo pods dipo ti mogbonwa elo sipo fun "itẹ pinpin" ti èyà (bii Imuṣiṣẹ ati ReplicaSet) ati ṣatunṣe pinpin yii (gẹgẹbi ibeere lile tabi bi ipo rirọ, ie ni ayo). Ẹya naa yoo faagun awọn agbara pinpin ti o wa tẹlẹ ti awọn adarọ-ese ti a gbero, lọwọlọwọ ni opin nipasẹ awọn aṣayan PodAffinity и PodAntiAffinity, fifun awọn alakoso iṣakoso ti o dara julọ ni ọrọ yii, eyi ti o tumọ si wiwa giga ti o dara julọ ati iṣapeye awọn ohun elo. Awọn alaye - ni Bọtini.
  • Lo BestFit Afihan в BeereToCapacityRatio Išė pataki nigba podu igbogun, eyi ti yoo gba laaye waye iṣakojọpọ bin ("ikojọpọ ninu awọn apoti") fun awọn orisun ipilẹ mejeeji (isise, iranti) ati awọn ti o gbooro (bii GPU). Fun alaye diẹ sii, wo Bọtini.

    Kubernetes 1.16: Akopọ ti awọn imotuntun akọkọ
    Eto awọn adarọ-ese: ṣaaju lilo eto imulo ibamu ti o dara julọ (taara nipasẹ oluṣeto aiyipada) ati pẹlu lilo rẹ (nipasẹ olupilẹṣẹ iṣeto)

Yato si, gbekalẹ agbara lati ṣẹda awọn afikun oluṣeto ti ara rẹ ni ita akọkọ igi idagbasoke Kubernetes (jade-ti-igi).

Awọn iyipada miiran

Paapaa ninu idasilẹ Kubernetes 1.16 o le ṣe akiyesi ipilẹṣẹ fun awọn metiriki ti o wa ni aṣẹ ni kikun, tabi diẹ ẹ sii gbọgán, ni ibamu pẹlu osise ilana to K8s irinse. Nwọn ibebe gbekele lori awọn ti o baamu Prometheus iwe. Awọn aiṣedeede dide fun awọn idi pupọ (fun apẹẹrẹ, diẹ ninu awọn metiriki ni a ṣẹda nirọrun ṣaaju awọn ilana lọwọlọwọ ti han), ati pe awọn olupilẹṣẹ pinnu pe o to akoko lati mu ohun gbogbo wa si boṣewa kan, “ni ibamu pẹlu iyoku ti ilolupo Prometheus.” Imuse lọwọlọwọ ti ipilẹṣẹ yii wa ni ipo alpha, eyiti yoo ni ilọsiwaju ni ilọsiwaju ni awọn ẹya atẹle ti Kubernetes si beta (1.17) ati iduroṣinṣin (1.18).

Ni afikun, awọn ayipada wọnyi le ṣe akiyesi:

  • Windows support idagbasoke с irisi Awọn ohun elo Kubeadm fun OS yii (ẹya alpha), anfani RunAsUserName fun awọn apoti Windows (ẹya alpha), ilọsiwaju Akọọlẹ Iṣẹ iṣakoso Ẹgbẹ (gMSA) ṣe atilẹyin fun ẹya beta, atilẹyin òke / so fun vSphere ipele.
  • Tunlo siseto funmorawon data ni awọn idahun API. Ni iṣaaju, àlẹmọ HTTP kan ni a lo fun awọn idi wọnyi, eyiti o paṣẹ nọmba awọn ihamọ ti o ṣe idiwọ fun ṣiṣe nipasẹ aiyipada. "Ibere ​​funmorawon" n ṣiṣẹ ni bayi: fifiranṣẹ awọn alabara Accept-Encoding: gzip ninu akọsori, wọn gba esi fisinuirindigbindigbin GZIP ti iwọn rẹ ba kọja 128 KB. Lọ awọn alabara ṣe atilẹyin funmorawon laifọwọyi (fifiranṣẹ akọsori ti o nilo), nitorinaa wọn yoo ṣe akiyesi idinku ninu ijabọ lẹsẹkẹsẹ. (Awọn atunṣe diẹ le nilo fun awọn ede miiran.)
  • O ṣee ṣe igbelowọn HPA lati/si awọn adarọ-ese odo ti o da lori awọn metiriki ita. Ti o ba da lori awọn nkan/awọn metiriki ita, lẹhinna nigbati awọn iṣẹ ṣiṣe ko ṣiṣẹ o le ṣe iwọn laifọwọyi si awọn ẹda 0 lati fipamọ awọn orisun. Ẹya yii yẹ ki o wulo ni pataki fun awọn ọran nibiti awọn oṣiṣẹ ti beere awọn orisun GPU, ati pe nọmba ti awọn oriṣiriṣi oriṣiriṣi ti awọn oṣiṣẹ alainiṣẹ kọja nọmba awọn GPU ti o wa.
  • Onibara tuntun - k8s.io/client-go/metadata.Client - fun “gbogbo” wiwọle si awọn nkan. O ṣe apẹrẹ lati mu awọn metadata pada ni irọrun (ie apakan metadata) lati awọn orisun iṣupọ ati ṣe ikojọpọ idoti ati awọn iṣẹ ipin pẹlu wọn.
  • Kọ Kubernetes bayi o le laisi ohun-ini (“itumọ ti” inu igi) awọn olupese awọsanma (ẹya alpha).
  • Si kubeadm IwUlO fi kun esiperimenta (alpha version) agbara lati kan ṣe awọn abulẹ nigba mosi init, join и upgrade. Kọ ẹkọ diẹ sii nipa bi o ṣe le lo asia --experimental-kustomize, wo inu Bọtini.
  • Oju opo tuntun fun apiserver - readyz, - gba ọ laaye lati okeere alaye nipa imurasilẹ rẹ. Olupin API naa tun ni asia kan --maximum-startup-sequence-duration, gbigba o lati fiofinsi awọn oniwe-tun bẹrẹ.
  • Meji awọn ẹya ara ẹrọ fun Azure polongo idurosinsin: support awọn agbegbe wiwa (Awọn agbegbe wiwa) ati agbelebu awọn oluşewadi ẹgbẹ (RG). Ni afikun, Azure ti ṣafikun:
    • atilẹyin ìfàṣẹsí AAD ati ADFS;
    • asọye service.beta.kubernetes.io/azure-pip-name lati pato awọn àkọsílẹ IP ti awọn fifuye iwontunwonsi;
    • anfaani ètò LoadBalancerName и LoadBalancerResourceGroup.
  • AWS ni bayi atilẹyin fun EBS lori Windows ati iṣapeye EC2 API awọn ipe DescribeInstances.
  • Kubeadm ni ominira bayi aṣikiri Iṣeto CoreDNS nigba iṣagbega ẹya CoreDNS.
  • Awọn alakomeji abbl ninu aworan Docker ti o baamu ṣe aye-executable, eyiti ngbanilaaye lati ṣiṣe aworan yii laisi iwulo fun awọn ẹtọ gbongbo. Paapaa, ati bẹbẹ lọ aworan ijira duro etcd2 support version.
  • В Ikọpọ Autoscaler 1.16.0 yipada si lilo distroless bi aworan ipilẹ, iṣẹ ilọsiwaju, ṣafikun awọn olupese awọsanma tuntun (DigitalOcean, Magnum, Packet).
  • Awọn imudojuiwọn ni lilo / software ti o gbẹkẹle: Lọ 1.12.9, etcd 3.3.15, CoreDNS 1.6.2.

PS

Ka tun lori bulọọgi wa:

orisun: www.habr.com

Fi ọrọìwòye kun