
Sel ööl on järgmine Kubernetes'i versioon — . Meie blogi traditsiooni kohaselt anname ülevaate peamistest muudatustest selle suurepärase avatud lähtekoodiga toote uues versioonis.
Selle refleksiooni ettevalmistamiseks kasutatud teave on võetud , ja vastavatest probleemidest, tõmbenimistest, Kubernetes'i täiustuste ettepanekutest (KEP).
Alustame olulise sissejuhatusega SIG cluster-lifecycle poolt: dünaamilised tõrkevarustatud klastrid Kubernetes (täpsemalt öeldes isehallatavad HA-deployments) on nüüd tavaliste (ühe sõlmega klastrite kontekstis) käskudega kubeadm'ile. (init ja liitu). Lühidalt öeldes, selleks:
- klastriga kasutatavad sertifikaadid kantakse üle saladustesse;
- klastri etcd kasutamise võimaldamiseks K8s-klastris (st eemaldades senise välist sõltuvuse) on kaasatud ;
- dokumenteeritakse soovitatavad seaded välist koormuse tasakaalustajat, mis tagab tõrkevarustatud konfiguratsiooni (hiljem plaanitakse sõltuvuse väljajätmist, kuid mitte antud etapis).

HA-klastri Kubernetes'i arhitektuur, mis on loodud kubeadm-iga
Rakenduse üksikasju saab tutvuda . See funktsioon oli tõeliselt kauaoodatud: alfa versioon oodati juba K8s 1.9-s, kuid see ilmus alles nüüd.
API
Meeskond rakenda ja üldse deklaratiivne haldus objektidega kohast kubectl apiserverisse. Arendajad selgitavad oma otsust lühidalt, et kubectl apply on Kubernetes'i konfiguratsioonidega töötamise põhiosa, kuid „on täis vigu ja on keeruline parandada“, mistõttu tuleb see funktsionaalsus viia korralikku seisu ja üle tuua juhtimisplaadini. Lihtsad ja selged näited tänapäevastest probleemidest:

Teave rakenduse kohta - . Praegune valmisolek - alfa versioon (üleminek beetaversioonile on planeeritud järgmises Kubernetes'e väljaandes).
Alfa versioonis sai kättesaadavaks OpenAPI v3 skeemi kasutamine CustomResources'i OpenAPI-dokumentatsiooni koostamiseks ja avaldamiseks (CR), mida kasutatakse K8s-i kasutaja määratletud ressursside (CustomResourceDefinition, CRD) valideerimiseks serveri poolel. OpenAPI avaldamine CRD jaoks võimaldab klientidel (nt kubectl) valida valideerimise enda poolel (raames kubectl create ja kubectl apply) ja esitada skeemidokumentatsiooni (kubectl explain). Lisainformatsioon - .
Varem olemas olnud logid lipu O_APPEND (mitte O_TRUNC) logide kaotuse vältimiseks teatud olukordades ning logide truncation'i mugavuse nimel externete tööriistade abil, mis on mõeldud rotatsiooniks.
Samuti tuleb märkida Kubernetes API kontekstis, et PodSandbox ja PodSandboxStatus väli runtime_handler informatsiooni jaoks RuntimeClass pod’is (rohkem informatsiooni leiate tekstist, mis käsitleb , kus see klass ilmus alfa-versioonina), ja Admission Webhook’ides võimalust määrata, milliseid versioone AdmissionReview nad toetavad. Lõpuks, Admission Webhook’ide reeglites on nüüd kliendi rakenduse ulatusi namespace'ide ja klastri piirangutega.
Salvestusruumid
, mis olid beeta-versioonis alates , stabiilseteks (GA): see feature gate ei ole enam väljalülitatud ja see eemaldatakse Kubernetes 1.17 versioonis.
keskkonnamuutujate kasutamine nn (nt pod’i nimi) kaustade nimede jaoks, mida monteeritakse kui , on saanud edasiarenduse – uue välja subPathExpr, mille abil määratakse nüüd vajalik kaustanimi. Algne funktsioon ilmus Kubernetes 1.11, kuid jäi ka 1.14 versiooniks alfa-kategooria.
Nagu ka eelmises Kubernetes väljaandes, on palju olulisi muudatusi aktiivselt areneva CSI (Container Storage Interface) jaoks:
CSI
Saab kättesaadav (alfaversioonis) mõõtmete muutmine CSI-mahute jaoks. Selle kasutamiseks on vajalik aktiveerida funktsioonigrupp nimega ExpandCSIVolumes, samuti peab konkreetne CSI-draiver toetama seda toimingut.
Veel üks CSI funktsioon alfaversioonis — otsese viitamine (st ilma PV/PVC kasutamiseta) CSI-mahtudele pod'i spetsifikatsioonis. See eemaldab piirangu kasutada CSI-d ainult kaugehitusena, avades uksed . Kasutamiseks () tuleb aktiveerida CSIInlineVolume funktsioonigrupp.
On toimunud edusamme ka Kubernetes'i "sisemuses", mis on seotud CSI-ga, ja mis ei ole lõppkasutajatele (süsteemiadministraatoritele) nii nähtavad... Praegu peavad arendajad toetama iga salvestuspakkuja kahte versiooni: üks — "vana meetodi" järgi, K8s koodibaasis (in-tree), ja teine — uue CSI raames (rohkem lugege näiteks) ). See tekitab arusaadavaid ebamugavusi, mida tuleb kõrvaldada, kui CSI stabiilsemaks muutub. Lihtsalt võtta ja kuulutada vananenud (deprecated) sisemine (in-tree) pistikprogrammid on praktiliselt võimatu, sest .
Kõik see on viinud selleni, et alfa-versioonid on saavutatud pluginite sisekood, ellu viidud nii in-tree kui ka CSI pluginid, mistõttu arendajate mured piirdub ühe versiooni toetamisega, samas kui ühilduvus vanade API-dega säilitatakse ja need saab tühistada tavapärase stsenaariumi järgi. Oodatakse, et järgmise Kubernetes'i versiooni (1.15) jooksul migratsioon kõikide pilveteenuse pakkujate pluginatesse, rakendamine saab beetaversiooni staatuse ja aktiveeritakse K8s installatsioonides vaikimisi. Täiendavad üksikasjad on . Selle migratsiooni tagajärjeks oli ka piirangute tühistamine, mida seadsid konkreetsed pilveteenuse pakkujad (AWS, Azure, GCE, Cinder).
Lisaks sellele toetatakse plokiseadmeid, kasutades CSI (CSIBlockVolume) beetaversiooniks.
Sõlmed / Kubelet
Esitatud alfa-versioon Kubelet'is, mis on ette nähtud peamiste ressursside kohta mõõtmiste edastamiseks. Üldiselt, kui varem sai Kubelet konteinerite kasutusstatistikat cAdvisorilt, siis nüüd tulevad need andmed konteineri täitmisest läbi CRI (Container Runtime Interface), samas on säilinud ka ühilduvus vanade Docker versioonidega. Varem edastati Kubeletis kogutud statistika REST API kaudu, nüüd kasutatakse selleks lõpp-punkti, mis asub aadressil /metrics/resource/v1alpha1. Pikemaajaline strateegia arendajate selleks, et vähendada Kubelet'i pakutavate mõõdikute arvu. Muide, neid mõõdikud mitte «core metrics», vaid «resource metrics» ja neid kirjeldatakse kui «first-class resources, such as cpu and memory».
Küll aga on huvitav nüanss: hoolimata gRPC lõpp-punkti selgest eelisest jõudluses võrreldes erinevate Prometheuse formaadiga kasutusjuhtudega (ühe tõhususe benchmark'i tulemust vt allpool), eelistasid autorid tekstivormingut Prometheus, kuna selle jälgimissüsteemi selge ülemuslikkus kogukonnas.
«gRPC ei ühildu peamiste jälgimispipeline’dega. Endpoint on kasulik ainult statistika edastamiseks Metrics Server’isse või jälgimiskomponentidesse, mis integreeruvad otse temaga. Kui Metrics Serveris on kasutusel va caching, siis Prometheuse tekstiformaadi toimivus on piisavalt hea meie jaoks, et eelistada Prometheust gRPC’le, arvestades Prometheuse laialdast levikut kogukonnas. Kui OpenMetrics formaadi stabiilsus paraneb, saame läheneda gRPC toimivusele proto-põhiste formaatide kaudu.»

Üks korraldatud jõudluse katsetus gRPC ja Prometheuse formaatide kasutamisel uue Kubeleti endpoint’i jaoks mõõtmete jaoks. Rohkem diagramme ja teavet leiate .
Muudest muudatustest:
- Kubelet nüüd (korraga) tundmatud (unknown) konteinerid enne taaskäivitamise ja eemaldamise operatsioone.
- VPN-teenuse kasutamisel nüüd init-konteineril on sama teave, mis tavalisel konteineril.
- Kubelet
usageNanoCoresCRI statistikateenuse pakkujast, samuti sõlmedele ja konteineritele Windows’is võrgu statistikat. - Operatsioonisüsteemi ja arhitektuuri teave kirjutatakse nüüd labelitesse.
kubernetes.io/osjakubernetes.io/archNode'ide (töötav versioon muutus beetast GA-ks). - Võime määrata konkreetse kasutajagruppi konteinerite jaoks pod'is (
RunAsGroup, lisandus versioonis ) beetaversiooni (vaikimisi sisse lülitatud). - du ja find, mida kasutatakse cAdvisoris, Go-realiseerimisega.
CLI
cli-runtime'is ja kubectl's lipp -k integreerimiseks (muide, selle arendamine toimub nüüd eraldi hoidlas), st spetsiaalsetest kaustadest kustomization'i täiendavate YAML-failide töötlemiseks (kuidas neid kasutada vt ):

Lihtsa kustomization faili kasutamise näide (võimalik on ka keerulisem kustomize rakendus )
Lisaks:
- uus käsk
kubectl create cronjob, mille nimi räägib enda eest. - V
kubectl logson nüüd võimalik lipud-f(--followlogide voogesitamiseks) ja-l(--selectorlabel query jaoks). - kubectl failide kopeerimist, kasutades wild card'i.
- Meeskonda
kubectl waitlipuke--allkõigi määratud ressursitüüpide valimiseks nimedega ruumis.
Muud
Stabiilse (GA) oleku said järgmised võimalused:
- , mida kasutatakse pod'i spetsifikatsioonis täiendavate tingimuste määramiseks, mida arvestatakse pod'i valmiduses;
- Toetav suured lehed (funktsiooni värav nimega );
- ;
- PriorityClass API, .
Teised muudatused, mis on esitatud Kubernetes 1.14:
- RBAC poliitika ei paku enam vaikimisi ligipääsu API-le
discoveryjaaccess-reviewkasutajatele, kellel puudub autentimine (unauthenticated). - CoreDNS ametlik tugi ainult Linuxile, seega kui kasutate kubeadm'i selle (CoreDNS) juurutamiseks klastris, peavad sõlmed töötama ainult Linuxis (selle piirangu jaoks kasutatakse nodeSelectors).
- CoreDNS vaikimisi konfiguratsioon on nüüd asemel proxy. Lisaks on CoreDNS readinessProbe, mis takistab koormuse tasakaalustamist vastavate (teenindamiseks mittevalmis) pod'ide peale.
- Kubeadm'is, etappides
initvõiupload-certs, laadida üles sertifikaadid, mis on vajalikud uue control-plane'i ühendamiseks kubeadm-certs salvestusega (kasutatakse lippu--experimental-upload-certs). - Windowsi installatsioonide jaoks on saadaval alfa versioon gMSA (Group Managed Service Account) — spetsiaalsed kontod Active Directory's, mida saavad kasutada konteinerid.
- GCE jaoks mTLS krüpteerimine jne ja kube-apiserveri vahel.
- Kasutatavates/sõltuvates tarkvarauuendustes: Go 1.12.1, CSI 1.1, CoreDNS 1.3.1, Docker 18.09 toetus kubeadm-is, ja minimaalne toetatud Docker API versioon on 1.26.
P.S.
Lugege ka meie blogist:
- «»;
- «»;
- «»;
- «».
Allikas: habr.com
