Kubernetes 1.17: Uuden kohokohdat

Eilen 9. joulukuuta tapahtui seuraava Kubernetesin julkaisu - 1.17. Blogillemme syntyneen perinteen mukaisesti puhumme merkittävimmistä muutoksista uudessa versiossa.

Kubernetes 1.17: Uuden kohokohdat

Tämän materiaalin valmistuksessa käytetyt tiedot on otettu virallisesta tiedotteesta, Kubernetes-parannukset seurantataulukot, MUUTOS-1.17 ja niihin liittyvät ongelmat, vetopyynnöt ja Kubernetes Enhancement Proposals (KEP). Mikä on uutta?..

Topologiatietoinen reititys

Kubernetes-yhteisö on odottanut tätä ominaisuutta pitkään - Topologiatietoinen palvelun reititys. jos KEP se on peräisin lokakuussa 2018, ja virallinen lisälaite — 2 vuotta sitten, tavanomaiset ongelmat (Kuten se) - ja vielä muutaman vuoden vanhempi...

Yleisideana on tarjota mahdollisuus toteuttaa "paikallinen" reititys Kubernetesissa sijaitseville palveluille. "Paikallisuus" tarkoittaa tässä tapauksessa "samaa topologista tasoa" (topologian taso), joka voi olla:

  • palveluille identtinen solmu,
  • sama palvelinteline,
  • samalla alueella
  • sama pilvipalveluntarjoaja,
  • ...

Esimerkkejä tämän ominaisuuden käytöstä:

  • säästöt liikenteessä pilviasennuksissa, joissa on useita käytettävyysvyöhykkeitä (multi-AZ) - katso. tuore kuva käyttämällä esimerkkiä liikenteestä samalta alueelta, mutta eri AZ:illa AWS:ssä;
  • alhaisempi suoritusviive / parempi suorituskyky;
  • jaettu palvelu, jolla on paikallista tietoa kunkin sirpaleen solmusta;
  • fluentd:n (tai analogien) sijoittaminen samaan solmuun sovellusten kanssa, joiden lokit kerätään;
  • ...

Tällaista reititystä, joka "tietää" topologiasta, kutsutaan myös verkkoaffiniteetiksi - analogisesti solmuaffiniteetti, pod-affiniteetti/antiaffiniteetti tai ilmestyi ei niin kauan sitten Topologiatietoinen äänenvoimakkuuden ajoitus (ja Volyymin tarjonta). Toteutuksen nykyinen taso ServiceTopology Kubernetesissa - alfa-versio.

Lue lisätietoja ominaisuuden toiminnasta ja siitä, kuinka voit jo käyttää sitä tässä artikkelissa yhdeltä kirjoittajista.

Kaksipinoinen IPv4/IPv6-tuki

Merkittävää edistystä korjattu toisessa verkkoominaisuudessa: kahden IP-pinon samanaikainen tuki, joka otettiin ensimmäisen kerran käyttöön vuonna K8s 1.16. Erityisesti uusi julkaisu toi seuraavat muutokset:

  • kube-välityspalvelimessa toteutettu mahdollisuus toimia samanaikaisesti molemmissa tiloissa (IPv4 ja IPv6);
  • в Pod.Status.PodIPs ilmestyi tuki alaspäin suuntautuvalle API:lle (samaan aikaan kuin /etc/hosts nyt he vaativat isäntäkonetta lisäämään IPv6-osoitteen);
  • kahden pinon tuki KIND (Kubernetes IN Docker) ja kubeadm;
  • päivitetyt e2e-testit.

Kubernetes 1.17: Uuden kohokohdat
kuva käyttämällä kaksoispinoa IPV4/IPv6 in KIND

CSI:n edistyminen

Julistettu vakaaksi topologian tuki CSI-pohjaista tallennustilaa varten, esiteltiin ensimmäisen kerran vuonna K8s 1.12.

Aloite varten volyymilaajennusten siirto CSI:hen - CSI-siirto - saavutettu beta-versio. Tämä ominaisuus on kriittinen olemassa olevien tallennuslaajennusten kääntämisessä (puussa) moderniin käyttöliittymään (CSI, puun ulkopuolinen) näkymätön Kubernetesin loppukäyttäjille. Klusterin järjestelmänvalvojien tarvitsee vain ottaa käyttöön CSI-siirto, minkä jälkeen nykyiset tilalliset resurssit ja työkuormat jatkavat "vain toimimista"... mutta käyttämällä uusimpia CSI-ajureita Kubernetes-ytimeen sisältyvien vanhentuneiden sijaan.

Tällä hetkellä AWS EBS -ajureiden siirto on valmis beta-versiossa (kubernetes.io/aws-ebs) ja GCE PD (kubernetes.io/gce-pd). Muiden varastotilojen ennusteet ovat seuraavat:

Kubernetes 1.17: Uuden kohokohdat

Puhuimme siitä, kuinka "perinteinen" tallennustuki K8:ssa tuli CSI:lle tässä artikkelissa. Ja CSI-siirtymisen beta-tilaan siirtyminen on omistettu erillinen julkaisu projektin blogissa.

Lisäksi toinen merkittävä CSI:n toiminnallisuus, joka on peräisin (alfa-toteutus) K1.17s 8:sta, saavutti beta-tilan (eli oletuksena käytössä) Kubernetes 1.12 -julkaisussa - tilannekuvien luominen ja toipuminen niistä. Kubernetes Volume Snapshot -sovellukseen betajulkaisun yhteydessä tehdyt muutokset:

  • jakamalla ulkoisen CSI-snapshotterin sivuvaunun kahdeksi ohjaimeksi,
  • lisätty poistettava salaisuus (poistosalaisuus) huomautuksena tilavuuden tilannekuvan sisällölle,
  • uusi viimeistelijä (viimeistely) estääksesi tilannekuvan API-objektin poistamisen, jos yhteyksiä on jäljellä.

Julkaisuhetkellä 1.17 ominaisuutta tukee kolme CSI-ohjainta: GCE Persistent Disk CSI Driver, Portworx CSI Driver ja NetApp Trident CSI Driver. Lisätietoja sen toteutuksesta ja käytöstä löytyy osoitteesta tämä julkaisu blogissa.

Pilvipalveluntarjoajan tunnisteet

Merkitsee automaattisesti määritetty luotuille solmuille ja taltioille käytetyn pilvipalveluntarjoajan mukaan, ovat olleet saatavilla Kubernetesissa beta-versiona erittäin pitkään - K8s 1.2:n julkaisusta lähtien (Huhtikuu 2016!). Koska niitä on käytetty laajasti niin pitkään, kehittäjät päättänyt, että on aika julistaa ominaisuus vakaaksi (GA).

Siksi ne kaikki nimettiin uudelleen vastaavasti (topologian mukaan):

  • beta.kubernetes.io/instance-typenode.kubernetes.io/instance-type
  • failure-domain.beta.kubernetes.io/zonetopology.kubernetes.io/zone
  • failure-domain.beta.kubernetes.io/regiontopology.kubernetes.io/region

... mutta ovat edelleen saatavilla vanhoilla nimillään (taaksepäin yhteensopivuuden vuoksi). Kaikkia järjestelmänvalvojia suositellaan kuitenkin vaihtamaan nykyisiin tarroihin. Aiheeseen liittyvä dokumentaatio K8s on päivitetty.

Kubeadm:n strukturoitu tulos

Esitetty alfaversiona ensimmäistä kertaa strukturoitu tulos kubeadm-apuohjelmalle. Tuetut muodot: JSON, YAML, Go-malli.

Motivaatio tämän ominaisuuden käyttöönotolle (mukaan KEP) On:

Vaikka Kubernetes voidaan ottaa käyttöön manuaalisesti, tämän toiminnon de facto (jos ei de jure) standardi on käyttää kubeadm-ohjelmaa. Suositut järjestelmänhallintatyökalut, kuten Terraform, luottavat kubeadmiin Kubernetesin käyttöönotossa. Cluster API:n suunniteltuja parannuksia ovat muunnettavissa oleva paketti Kubernetes-käynnistystä varten kubeadmin ja cloud-initin kanssa.

Ilman strukturoitua tulostusta, jopa ensisilmäyksellä vaarattomat muutokset voivat rikkoa Terraformin, Cluster API:n ja muut ohjelmistot, jotka käyttävät kubeadmin tuloksia.

Lähisuunnitelmiimme kuuluu tuki (strukturoidun tulosteen muodossa) seuraaville kubeadm-komentoille:

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

Kuva JSON-vastauksesta komentoon 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="
}

Muiden innovaatioiden vakauttaminen

Yleensä Kubernetes 1.17:n julkaisu tapahtui mottona "pysyvyys" Tätä helpotti se, että monet siinä olevat ominaisuudet (niiden kokonaismäärä on 14) sai GA-tilan. Heidän joukossa:

Muut muutokset

Täydellinen luettelo Kubernetes 1.17:n innovaatioista ei tietenkään rajoitu yllä lueteltuihin. Tässä on joitain muita (ja täydellisempi luettelo, katso Vaihdokas):

  • Viime julkaisussa esitetty ominaisuus on saavuttanut beta-version RunAsUserName ikkunoita varten;
  • samanlainen muutos sattui EndpointSlice API (myös K8s 1.16:sta), mutta toistaiseksi tämä Endpoint API:n suorituskykyä/skaalautuvuutta parantava ratkaisu ei ole oletusarvoisesti käytössä.
  • podit ovat nyt kriittisiä klusterin toiminnalle voidaan luoda ei vain nimitiloissa kube-system (katso lisätietoja dokumentaatiosta Rajoita Priority Class kulutusta);
  • uusi vaihtoehto kubeletille - --reserved-cpus — voit määrittää nimenomaisesti luettelon järjestelmälle varatuista prosessoreista;
  • varten kubectl logs esitetty uusi lippu --prefix, lisäämällä pod- ja lähdesäiliön nimen jokaiselle lokin riville;
  • в label.Selector lisätty RequiresExactMatch;
  • kaikki kontit kube-dns:ssä ovat nyt käynnissä vähemmän etuoikeuksia;
  • hyperkube erotettu erilliseen GitHub-tietovarastoon, eikä sitä enää sisällytetä Kubernetes-julkaisuihin;
  • paljon parannettu suorituskyky kube-välityspalvelin ei-UDP-porteille.

Riippuvuusmuutokset:

  • kubeadmin sisältämä CoreDNS-versio on 1.6.5;
  • crictl-versio päivitetty versioon 1.16.1;
  • CSI 1.2.0;
  • etcd 3.4.3;
  • Viimeisin testattu Docker-versio päivitetty versioon 19.03;
  • Kubernetes 1.17:n rakentamiseen vaadittava Go-versio on vähintään 1.13.4.

PS.

Lue myös blogistamme:

Lähde: will.com

Lisää kommentti