Eilen 9. joulukuuta tapahtui seuraava Kubernetesin julkaisu - 1.17. Blogillemme syntyneen perinteen mukaisesti puhumme merkittävimmistä muutoksista uudessa versiossa.
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;
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.PodIPsilmestyi 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;
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:
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):
... 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.
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:
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:
Katso Kirjanmerkit - uudentyyppiset tapahtumat, joilla on otsikko, että kaikki objektit ovat tiettyyn versioon asti (resourceVersion) on jo käsitelty kellolla;
"finalisaattorin suojaus" (Viimeistelijän suojaus) kuormituksen tasapainottajille (tarkista vastaavat palveluresurssit ennen LoadBalancer-resurssien poistamista);
kube-apiserver -optimointi suorituskykyä työskennellessäsi useiden kellojen kanssa tarkkailemalla identtisiä objektijoukkoja – saavutetaan välttämällä samojen objektien toistuva sarjoittaminen jokaiselle tarkkailijalle.
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):
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ä.