Kubernetes 1.14: BECA de inovasyon prensipal yo

Kubernetes 1.14: BECA de inovasyon prensipal yo

Jou lannwit sa a pral pran plas pwochen lage nan Kubernetes - 1.14. Dapre tradisyon ki te devlope pou blog nou an, nou ap pale de chanjman kle yo nan nouvo vèsyon an nan bèl pwodwi Open Source sa a.

Yo pran enfòmasyon yo itilize pou prepare materyèl sa a Kubernetes amelyorasyon tablo swiv, CHANGELOG-1.14 ak pwoblèm ki gen rapò, demann rale, Pwopozisyon Amelyorasyon Kubernetes (KEP).

Ann kòmanse ak yon entwodiksyon enpòtan nan SIG gwoup-sik lavi: grap failover dinamik Kubernetes (oswa yo dwe pi egzak, deplwaman HA endepandan) se kounye a ka kreye lè l sèvi avèk kòmandman abitye (nan kontèks grap sèl-nœuds). kubeadm (init и join). Nan ti bout tan, pou sa a:

  • sètifika gwoup la itilize yo transfere nan sekrè;
  • pou posiblite pou itilize gwoup etcd andedan gwoup K8s (sa vle di debarase m de depandans ekstèn ki te deja egziste a) etcd-operatè;
  • Dokiman paramèt yo rekòmande pou yon balans chaj ekstèn ki bay yon konfigirasyon toleran fay (nan fiti li planifye pou elimine depandans sa a, men se pa nan etap sa a).

Kubernetes 1.14: BECA de inovasyon prensipal yo
Achitekti yon gwoup Kubernetes HA ki te kreye ak kubeadm

Ou ka jwenn detay sou aplikasyon an nan pwopozisyon konsepsyon. Karakteristik sa a te vrèman long dire: vèsyon alfa a te espere tounen nan K8s 1.9, men sèlman parèt kounye a.

API

Ekip apply epi anjeneral pale jesyon objè deklarasyon pase nan kubectl nan apiserver. Devlopè yo tèt yo eksplike yon ti tan desizyon yo lè yo di sa kubectl apply - yon pati fondamantal nan travay ak konfigirasyon nan Kubernetes, sepandan, "li plen ak pinèz ak difisil a ranje," ak Se poutèt sa fonksyonalite sa a bezwen yo dwe pote tounen nan nòmal ak transfere nan avyon an kontwòl. Egzanp senp ak klè sou pwoblèm ki egziste jodi a:

Kubernetes 1.14: BECA de inovasyon prensipal yo

Detay sou aplikasyon an se nan CAP. Preparasyon aktyèl la se alfa (pwomosyon nan beta planifye pou pwochen lage Kubernetes la).

Fè disponib nan vèsyon alpha opòtinite lè l sèvi avèk OpenAPI v3 konplo a pou kreye ak pibliye dokiman OpenAPI pou CustomResources (CR) yo itilize pou valide (bò sèvè) resous itilizatè defini K8 yo (CustomResourceDefinition, CRD). Piblikasyon OpenAPI pou CRD pèmèt kliyan (egzanp. kubectl) fè validation sou bò ou (nan kubectl create и kubectl apply) epi bay dokiman selon konplo a (kubectl explain). Detay - nan CAP.

Pre-egziste mòso bwa yo ap louvri kounye a ak drapo O_APPEND (men pa O_TRUNC) pou fè pou evite pèt mòso bwa nan kèk sitiyasyon ak pou konvenyans nan tronke mòso bwa ak sèvis piblik ekstèn pou wotasyon.

Epitou nan kontèks Kubernetes API a, li ka remake ke nan PodSandbox и PodSandboxStatus te ajoute jaden runtime_handler pou anrejistre enfòmasyon sou RuntimeClass nan gous la (li plis sou li nan tèks la sou Kubernetes 1.12 lage, kote klas sa a te parèt kòm yon vèsyon alpha), ak nan Admission Webhooks aplike kapasite pou detèmine ki vèsyon AdmissionReview yo sipòte. Finalman, règ Admisyon Webhooks yo kounye a ka limite limit nan itilizasyon yo pa espas non ak kad gwoup.

Depo

PersistentLocalVolumes, ki te gen estati beta depi lage K8s 1.10, te anonse ki estab (GA): pòtay karakteristik sa a pa enfim ankò epi yo pral retire nan Kubernetes 1.17.

Posibilite lè l sèvi avèk varyab anviwònman yo rele Downward API (pou egzanp, non gous la) pou non anyè ki monte kòm subPath, te devlope - nan fòm lan nan yon nouvo jaden subPathExpr, ki kounye a itilize pou detèmine non anyè vle a. Karakteristik la te parèt okòmansman nan Kubernetes 1.11, men pou 1.14 li te rete nan estati vèsyon alpha.

Menm jan ak lage Kubernetes anvan an, gen anpil chanjman enpòtan yo prezante pou CSI (Kontainer Storage Interface) k ap devlope aktivman:

CSI

Te vin disponib (kòm yon pati nan vèsyon an alfa) sipòte redimansyon pou volim CSI. Pou itilize li ou pral bezwen pèmèt pòtay la karakteristik yo rele ExpandCSIVolumes, osi byen ke prezans nan sipò pou operasyon sa a nan yon chofè espesifik CSI.

Yon lòt karakteristik pou CSI nan vèsyon an alfa - opòtinite refere dirèkteman (sa vle di san yo pa itilize PV/PVC) nan volim CSI nan spesifikasyon gous la. Sa a retire restriksyon sou itilizasyon CSI kòm depo done sèlman aleka, louvri pòt nan mond lan pou yo volim lokal efemèr. Pou itilize (egzanp nan dokiman yo) dwe aktive CSIInlineVolume pòtay karakteristik.

Te gen tou pwogrè nan "entèn yo" nan Kubernetes ki gen rapò ak CSI, ki pa tèlman vizib nan itilizatè fen (administratè sistèm) ... Kounye a, devlopè yo fòse yo sipòte de vèsyon nan chak plugin depo: youn - "nan la ansyen fason", andedan kod K8s (nan -tree), ak dezyèm lan - kòm yon pati nan nouvo CSI la (li plis sou li, pou egzanp, nan isit la). Sa lakòz enkonvenyan konprann ki bezwen adrese kòm CSI tèt li estabilize. Li pa posib tou senpleman depreche API a nan grefon entèn (nan-pyebwa) akòz politik Kubernetes ki enpòtan.

Tout bagay sa a te mennen nan lefèt ke vèsyon an alfa rive pwosesis migrasyon kòd plugin entèn, aplike kòm nan-pyebwa, nan grefon CSI, gras a ki enkyetid yo nan devlopè yo pral redwi a sipòte yon vèsyon nan grefon yo, ak konpatibilite ak ansyen API yo ap rete epi yo ka deklare demode nan senaryo abityèl la. Li espere ke nan pwochen lage Kubernetes (1.15) tout grefon founisè nwaj yo pral imigre, aplikasyon an pral resevwa estati beta epi yo pral aktive nan enstalasyon K8s pa default. Pou plis detay, gade pwopozisyon konsepsyon. Migrasyon sa a te lakòz tou echèk soti nan limit volim ki defini pa founisè nwaj espesifik (AWS, Azure, GCE, Cinder).

Anplis de sa, sipò pou aparèy blòk ak CSI (CSIBlockVolume) transfere nan vèsyon beta.

Nœuds/Kubelet

Alpha vèsyon prezante nouvo pwen final nan Kubelet, ki fèt pou retounen mezi sou resous kle yo. Anjeneral pale, si deja Kubelet te resevwa estatistik sou itilizasyon veso nan men cAdvisor, kounye a done sa yo soti nan anviwònman an egzekite veso atravè CRI (Kontenitè Runtime Entèfas), men konpatibilite pou travay ak ansyen vèsyon Docker tou konsève. Anvan sa, estatistik yo te kolekte nan Kubelet yo te voye atravè API REST, men kounye a yon pwen final ki sitiye nan /metrics/resource/v1alpha1. Estrateji alontèm devlopè yo konsiste se pou minimize seri metrik Kubelet bay. By wout la, mezi sa yo tèt yo kounye a yo rele pa "mesrik debaz", men "mesrik resous", epi yo dekri kòm "resous premye klas, tankou CPU, ak memwa".

Yon nuans trè enteresan: malgre avantaj pèfòmans klè nan pwen final la gRPC an konparezon ak divès ka lè l sèvi avèk fòma Prometheus la. (gade rezilta youn nan referans ki anba yo), otè yo te prefere fòma tèks Prometheus akòz lidèchip klè sistèm siveyans sa a nan kominote a.

"gRPC pa konpatib ak gwo tiyo siveyans. Endpoint pral itil sèlman pou livrezon metrik nan Metrics Server oswa siveyans eleman ki entegre dirèkteman ak li. Pèfòmans fòma tèks Prometheus lè w ap itilize kachèt nan Metrics Server bon ase pou nou pito Prometheus pase gRPC bay adopsyon toupatou nan Prometheus nan kominote a. Yon fwa fòma OpenMetrics la vin pi estab, nou pral kapab apwoche pèfòmans gRPC ak yon fòma ki baze sou pwoto.

Kubernetes 1.14: BECA de inovasyon prensipal yo
Youn nan tès pèfòmans konparatif lè l sèvi avèk fòma gRPC ak Prometheus nan nouvo pwen final Kubelet pou mezi. Ou ka jwenn plis graf ak lòt detay nan CAP.

Pami lòt chanjman:

  • Kubelet kounye a (yon fwa) ap eseye sispann resipyan yo nan yon eta enkoni anvan rekòmanse ak efase operasyon yo.
  • Lè lè l sèvi avèk la PodPresets kounye a nan veso init la se te ajoute menm enfòmasyon ak yon veso regilye.
  • kubelet te kòmanse itilize usageNanoCores soti nan founisè a estatistik CRI, ak pou nœuds ak resipyan sou Windows te ajoute estatistik rezo.
  • Sistèm operasyon ak enfòmasyon achitekti kounye a anrejistre nan etikèt yo kubernetes.io/os и kubernetes.io/arch Objè ne (transfere soti nan beta nan GA).
  • Kapasite pou presize yon gwoup itilizatè sistèm espesifik pou resipyan ki nan yon gous (RunAsGroup, parèt nan K8s 1.11) avanse anvan beta (pèmèt pa default).
  • du ak jwenn itilize nan cAdvisor, ranplase sou aplikasyon Go.

Klima

Nan cli-runtime ak kubectl te ajoute -k drapo pou entegrasyon ak personnaliser (nan chemen an, devlopman li yo kounye a te pote soti nan yon depo separe), i.e. pou trete fichye YAML adisyonèl ki soti nan anyè espesyal kustomization (pou plis detay sou itilizasyon yo, gade CAP):

Kubernetes 1.14: BECA de inovasyon prensipal yo
Egzanp itilizasyon dosye senp personnalisation (yon aplikasyon ki pi konplèks nan kustomize posib nan superpositions)

Anplis de sa:

  • Te ajoute nouvo ekip kubectl create cronjob, ki gen non pale pou tèt li.
  • В kubectl logs kounye a ou kapab konbine drapo -f (--follow pou difizyon mòso bwa) ak -l (--selector pou demann etikèt).
  • kubectl anseye kopye fichye yo chwazi pa wild card.
  • Pou ekip la kubectl wait te ajoute drapo --all pou chwazi tout resous ki nan espas non kalite resous espesifye a.

Gen lòt ki

Kapasite sa yo te resevwa estati stab (GA):

Lòt chanjman ki prezante nan Kubernetes 1.14:

  • Règleman RBAC defo pa pèmèt aksè API ankò discovery и access-review itilizatè san otantifikasyon (pa otantifye).
  • Sipò ofisyèl CoreDNS asire Linux sèlman, kidonk lè w ap itilize kubeadm pou deplwaye li (CoreDNS) nan yon gwoup, nœuds yo dwe sèlman kouri sou Linux (nodeSelectors yo itilize pou limit sa a).
  • Konfigirasyon defo CoreDNS se kounye a itilizasyon avanse plugin olye pou yo prokurasyon. Epitou, nan CoreDNS te ajoute ReadinessProbe, ki anpeche balanse chaj sou gous apwopriye (pa pare pou sèvis).
  • Nan kubeadm, sou faz init oswa upload-certs, te vin posib chaje sètifika ki nesesè pou konekte nouvo avyon kontwòl la ak sekrè kubeadm-certs (sèvi ak drapo a --experimental-upload-certs).
  • Yon vèsyon alpha te parèt pou enstalasyon Windows sipò gMSA (Group Managed Service Account) - kont espesyal nan Anyè Aktif ki ka itilize tou pa resipyan.
  • Pou G.C.E. aktive mTLS chifreman ant etcd ak kube-apiserver.
  • Mizajou nan lojisyèl itilize/depandan: Ale 1.12.1, CSI 1.1, CoreDNS 1.3.1, Docker 18.09 sipò nan kubeadm, ak vèsyon minimòm Docker API ki sipòte se kounye a 1.26.

PS

Li tou sou blog nou an:

Sous: www.habr.com

Add nouvo kòmantè