Kubernetes 1.14: Uuden kohokohdat

Kubernetes 1.14: Uuden kohokohdat

Tänä yönä tapahtuu seuraava Kubernetesin julkaisu - 1.14. Blogillemme kehittyneen perinteen mukaisesti puhumme tämän upean Open Source -tuotteen uuden version tärkeimmistä muutoksista.

Tämän materiaalin valmistuksessa käytetyt tiedot on otettu osoitteesta Kubernetes-parannukset seurantataulukot, MUUTOS-1.14 ja niihin liittyvät ongelmat, vetopyynnöt, Kubernetes Enhancement Proposals (KEP).

Aloitetaan tärkeästä johdannosta SIG-klusterin elinkaaresta: dynaamiset vikasietoklusterit Kubernetes (tai tarkemmin sanottuna itseisännöidyt HA-asennukset) on nyt voit luoda käyttämällä tuttuja (yksisolmun klustereiden yhteydessä) komentoja kubeadm (init и join). Lyhyesti tähän:

  • klusterin käyttämät varmenteet siirretään salaisuuksiin;
  • mahdollisuudesta käyttää etcd-klusteria K8s-klusterin sisällä (eli päästä eroon aiemmin olemassa olevasta ulkoisesta riippuvuudesta) etcd-operaattori;
  • Dokumentoi suositellut asetukset ulkoiselle kuormantasaajalle, joka tarjoaa vikasietoisen kokoonpanon (tulevaisuudessa tämä riippuvuus on tarkoitus poistaa, mutta ei tässä vaiheessa).

Kubernetes 1.14: Uuden kohokohdat
Kubernetes HA -klusterin arkkitehtuuri, joka on luotu kubeadmilla

Yksityiskohdat toteutuksesta löytyvät osoitteesta suunnitteluehdotus. Tätä ominaisuutta odotettiin todella kauan: alfaversiota odotettiin jo K8s 1.9:ssä, mutta se ilmestyi vasta nyt.

API

Joukkue apply ja yleensä deklaratiivinen objektinhallinta läpäissyt ja kubectl apiserverissä. Kehittäjät itse perustelevat lyhyesti päätöstään sanomalla näin kubectl apply - Olennainen osa Kubernetesin konfiguraatioiden kanssa työskentelyä, mutta "se on täynnä bugeja ja vaikea korjata", ja siksi tämä toiminto on palautettava normaaliksi ja siirrettävä ohjaustasolle. Yksinkertaisia ​​ja selkeitä esimerkkejä nykypäivän ongelmista:

Kubernetes 1.14: Uuden kohokohdat

Yksityiskohdat toteutuksesta löytyvät KEP. Nykyinen valmius on alfa (ylennys beta-versioon on suunniteltu seuraavaan Kubernetes-julkaisuun).

Saatavilla alfa-versiona tilaisuus käyttämällä OpenAPI v3 -mallia OpenAPI-dokumentaation luominen ja julkaiseminen CustomResourcesille (CR) käytetään (palvelinpuolen) K8s:n käyttäjän määrittämien resurssien validointiin (CustomResourceDefinition, CRD). OpenAPI for CRD:n julkaiseminen mahdollistaa asiakkaiden (esim. kubectl) suorittaa vahvistuksen puolellasi (sisällä kubectl create и kubectl apply) ja antaa asiakirjat järjestelmän mukaisesti (kubectl explain). Tiedot - sisään KEP.

Aiemmin olemassa olevat lokit ovat nyt auki lipun kanssa O_APPEND (mutta ei O_TRUNC) välttääkseen tukkien katoamisen joissakin tilanteissa ja helpottaakseen tukkien katkaisua ulkoisten apuohjelmien avulla kiertoa varten.

Myös Kubernetes API:n yhteydessä voidaan todeta, että in PodSandbox и PodSandboxStatus lisätty kenttä runtime_handler tallentaa tietoja aiheesta RuntimeClass podissa (lue siitä lisää aiheesta Kubernetes 1.12 -julkaisu, jossa tämä luokka esiintyi alfaversiona) ja Admission Webhooksissa toteutettu kyky määrittää, mitkä versiot AdmissionReview he tukevat. Lopuksi, pääsy Webhooks säännöt ovat nyt voidaan rajoittaa nimiavaruuksien ja klusterikehysten käytön laajuus.

Varastointi

PersistentLocalVolumes, jolla oli beta-tila julkaisun jälkeen K8s 1.10, ilmoitti vakaa (GA): tämä ominaisuusportti ei ole enää pois käytöstä ja se poistetaan Kubernetes 1.17:ssä.

Tilaisuus kutsutaan ympäristömuuttujia Alaspäin suuntautuva API (esimerkiksi pod-nimi) hakemistojen nimille, jotka on asennettu nimellä subPath, kehitettiin - uuden alan muodossa subPathExpr, jota käytetään nyt halutun hakemiston nimen määrittämiseen. Ominaisuus ilmestyi alun perin Kubernetes 1.11:ssä, mutta 1.14:ssä se pysyi alfaversiossa.

Kuten edellisessä Kubernetes-julkaisussa, aktiivisesti kehittyvässä CSI:ssä (Container Storage Interface) tehdään monia merkittäviä muutoksia:

CSI

Tuli saataville (osana alfaversiota) tukea koon muuttaminen CSI-taltioille. Käyttääksesi sitä sinun on otettava käyttöön ominaisuusportti nimeltä ExpandCSIVolumes, sekä tuen saatavuus tälle toiminnolle tietyssä CSI-ohjaimessa.

Toinen ominaisuus CSI:lle alfaversiossa - tilaisuus viitata suoraan (eli käyttämättä PV/PVC:tä) pod-määrittelyssä oleviin CSI-taltioihin. Tämä poistaa rajoituksen CSI:n käytölle yksinomaan etätietona, joka avaa heille ovia maailmaan paikallisia lyhytaikaisia ​​volyymejä. Käytettäväksi (esimerkki dokumentaatiosta) on oltava käytössä CSIInlineVolume ominaisuus portti.

Edistystä on tapahtunut myös CSI:hen liittyvissä Kubernetesin "sisäisissä", jotka eivät ole niin näkyviä loppukäyttäjille (järjestelmänvalvojille) ... Tällä hetkellä kehittäjät ovat pakotettuja tukemaan kahta versiota kustakin tallennuslaajennuksesta: yksi - " vanha tapa”, K8s-koodikannan sisällä (-puussa) ja toinen - osana uutta CSI:tä (lue siitä lisää esim täällä). Tämä aiheuttaa ymmärrettäviä haittoja, joihin on puututtava, kun CSI itse stabiloituu. Sisäisten (puun sisäisten) laajennusten API-sovellusliittymää ei voi yksinkertaisesti poistaa käytöstä johtuen asiaankuuluvaa Kubernetes-politiikkaa.

Kaikki tämä johti siihen, että alfaversio saavutti siirtoprosessi sisäinen laajennuskoodi, toteutettu puun sisällä, CSI-laajennuksissa, minkä ansiosta kehittäjien huolet vähenevät yhden laajennusversion tukemiseen ja yhteensopivuus vanhojen API:iden kanssa säilyy ja ne voidaan julistaa vanhentuneiksi tavanomaisessa skenaariossa. On odotettavissa, että seuraavaan Kubernetesin (1.15) julkaisuun mennessä kaikki pilvipalveluntarjoajan laajennukset siirretään, toteutus saa beta-tilan ja aktivoituu oletuksena K8s-asennuksissa. Katso lisätietoja suunnitteluehdotus. Tämä siirto johti myös vika tiettyjen pilvipalveluntarjoajien (AWS, Azure, GCE, Cinder) määrittelemistä volyymirajoista.

Lisäksi tuki lohkolaitteille, joissa on CSI (CSIBlockVolume) siirretty beta-versioon.

Solmut/Kubelet

Alfa-versio esitelty uusi päätepiste Kubeletissa, suunniteltu avainresurssien palautusmittarit. Yleisesti ottaen, jos aiemmin Kubelet sai tilastot säilön käytöstä cAdvisorilta, nyt nämä tiedot tulevat säilön ajonaikaisesta ympäristöstä CRI:n (Container Runtime Interface) kautta, mutta yhteensopivuus Dockerin vanhempien versioiden kanssa työskentelyyn on myös säilytetty. Aiemmin Kubeletissa kerätyt tilastot lähetettiin REST API:n kautta, mutta nyt päätepiste sijaitsee osoitteessa /metrics/resource/v1alpha1. Kehittäjien pitkän aikavälin strategia koostuu on minimoida Kubeletin tarjoamat mittarit. Muuten, itse nämä mittarit nyt he soittavat ei "ydinmetriikka", vaan "resurssimetriikka", ja niitä kuvataan "ensiluokan resursseina, kuten prosessori ja muisti".

Erittäin mielenkiintoinen vivahde: ​​huolimatta gRPC-päätepisteen selkeästä suorituskykyedusta verrattuna Prometheus-muodon erilaisiin käyttötapauksiin (katso yhden vertailutestin tulos alta), kirjoittajat suosivat Prometheuksen tekstimuotoa tämän seurantajärjestelmän selkeän johdon vuoksi yhteisössä.

"gRPC ei ole yhteensopiva suurten valvontaputkien kanssa. Päätepiste on hyödyllinen vain toimitettaessa mittareita Metrics Serverille tai valvottaessa komponentteja, jotka integroituvat suoraan siihen. Prometheus-tekstimuodon suorituskyky käytettäessä välimuistia Metrics Serverissä tarpeeksi hyvä suosimme Prometheusta gRPC:n sijaan, koska Prometheus on otettu laajalti käyttöön yhteisössä. Kun OpenMetrics-formaatti muuttuu vakaammaksi, voimme lähestyä gRPC-suorituskykyä protopohjaisella muodolla.

Kubernetes 1.14: Uuden kohokohdat
Yksi vertailevista suorituskykytesteistä gRPC- ja Prometheus-muotojen käyttämiselle uudessa Kubelet-päätepisteessä mittauksille. Lisää kaavioita ja muita yksityiskohtia löydät osoitteesta KEP.

Muiden muutosten joukossa:

  • Kubelet nyt (kerran) yrittää lopettaa Säilöt tuntemattomassa tilassa ennen uudelleenkäynnistystä ja poistamista.
  • Käytettäessä PodPresets nyt init-säiliöön lisätään samat tiedot kuin tavallisessa säiliössä.
  • kubelet alkanut käyttää usageNanoCores CRI-tilastotoimittajalta sekä solmuille ja säilöille Windowsissa lisätty verkon tilastot.
  • Käyttöjärjestelmä- ja arkkitehtuuritiedot on nyt tallennettu tarroihin kubernetes.io/os и kubernetes.io/arch Solmuobjektit (siirretty beetaversiosta GA:han).
  • Mahdollisuus määrittää tietyn järjestelmän käyttäjäryhmä kotelon säilöille (RunAsGroup, esiintyi K8s 1.11) pitkälle kehittynyt ennen betaa (oletuksena käytössä).
  • du ja find käytetään cAdvisorissa, vaihdettu on Go -toteutus.

CLI

Cli-runtimessa ja kubectlissä lisätty -k -lippu integrointia varten muokata (muuten, sen kehitys tehdään nyt erillisessä arkistossa), ts. käsitelläksesi ylimääräisiä YAML-tiedostoja erityisistä kustomization-hakemistoista (lisätietoja niiden käytöstä, katso KEP):

Kubernetes 1.14: Uuden kohokohdat
Esimerkki yksinkertaisesta tiedostojen käytöstä mukauttaminen (Monimutkaisempi kustomize-sovellus on mahdollista sisällä peittokuvat)

Lisäksi:

  • lisätty uusi joukkue kubectl create cronjob, jonka nimi puhuu puolestaan.
  • В kubectl logs nyt voit yhdistää liput -f (--follow lokien suoratoistoa varten) ja -l (--selector tarrakyselyä varten).
  • kubectl opettanut kopioida jokerikortilla valitut tiedostot.
  • Joukkueelle kubectl wait lisätty lippu --all valitaksesi kaikki määritetyn resurssityypin nimiavaruuden resurssit.

Muut

Seuraavat ominaisuudet ovat saaneet vakaan (GA) tilan:

Muut Kubernetes 1.14:ssä tehdyt muutokset:

  • RBAC-oletuskäytäntö ei enää salli API-käyttöä discovery и access-review käyttäjät ilman todennusta (todistamaton).
  • Virallinen CoreDNS-tuki varmistettu Vain Linux, joten käytettäessä kubeadmia sen käyttöönottoon (CoreDNS) klusterissa, solmujen tulee toimia vain Linuxissa (tähän rajoitukseen käytetään nodeSelectoreja).
  • CoreDNS-oletuskokoonpano on nyt käyttää eteenpäin-laajennus välityspalvelimen sijaan. Myös CoreDNS:ssä lisätty ReadinessProbe, joka estää kuormituksen tasapainottamisen asianmukaisissa (ei huoltovalmiissa) koteloissa.
  • Kubeadmissä, vaiheissa init tai upload-certs, tuli mahdolliseksi lataa tarvittavat varmenteet uuden ohjaustason liittämiseen kubeadm-certs secretiin (käytä lippua --experimental-upload-certs).
  • Alfa-versio on ilmestynyt Windows-asennuksille tuki gMSA (Group Managed Service Account) - Active Directoryn erityistilit, joita myös säilöt voivat käyttää.
  • G.C.E. aktivoitu mTLS-salaus etcd:n ja kube-apiserverin välillä.
  • Päivityksiä käytettyihin/riippuvaisiin ohjelmistoihin: Go 1.12.1, CSI 1.1, CoreDNS 1.3.1, Docker 18.09 -tuki kubeadmissä, ja vähimmäistuettu Docker API -versio on nyt 1.26.

PS.

Lue myös blogistamme:

Lähde: will.com

Lisää kommentti