
KĂ«tĂ« natĂ« njĂ« tjetĂ«r lĂ«shim i Kubernetes â . Duke ndjekur traditĂ«n e kĂ«tij blogu, ne do tĂ« flasim pĂ«r ndryshimet kyçe nĂ« versionin e ri tĂ« kĂ«tij produkte tĂ« shkĂ«lqyer open source.
Informacioni i përdorur për përgatitjen e këtij materiali është marrë nga , dhe çështjet, kërkesat për tërheqje, Propozimet e Përmirësimit të Kubernetes (KEP) përkatëse.
Le të fillojmë me një hyrje të rëndësishme nga SIG cluster-lifecycle: klasterat dinamik të qëndrueshmërisë Kubernetes (ndërsa nëse do të shprehemi më saktë, rikthimet e HA të vetëpritur) tani nëpërmjet komandave të njohura (në kontekstin e klasterave me një nod) kubeadm (init dhe bashkohu). Në përmbledhje, për këtë:
- certifikatat e përdorura nga klasteri janë transferuar në sekrete;
- për të lejuar përdorimin e klasterit etcd brenda klasterit K8s (në kuptimin e heqjes së varësisë ekzistuese të jashtme) është angazhuar ;
- janë dokumentuar konfigurimet e rekomanduara për një balancues të ngarkesës të jashtëm, që ofron një konfigurim të qëndrueshmërisë (në të ardhmen planifikohet mundësia për t'u hequr nga kjo varësi, por jo në këtë fazë).

Arkitektura e klasterit të HA të Kubernetes, e krijuar me kubeadm
Detajet e zbatimit mund të shihen në . Kjo veçori ishte vërtet e pritur: versioni alfa pritej që në K8s 1.9, por doli vetëm tani.
API
Ekipa aplikoni dhe në përgjithësi menaxhimi deklarativ i objekteve nga kubectl në apiserver. Vetë zhvilluesit e shpjegojnë shkurtimisht vendimin e tyre duke thënë se kubectl apply është një pjesë themelore e punës me konfigurimet në Kubernetes, megjithatë "është plot me gabime dhe e vështirë për t'u riparuar", prandaj kjo funksionalitet duhet të përmirësohet dhe të transferohet në plani i kontrollit. Shembujt e thjeshtë dhe të qartë të problemeve që ekzistojnë sot janë:

Detajet e zbatimit janë në . Gatiësia aktuale është version alfa (e avancuar për beta planifikohet për lëshimin e ardhshëm të Kubernetes).
Në versionin alfa bëhet e disponueshme përdorimi i skemës OpenAPI v3 për krijimin dhe publikimin e dokumentacionit OpenAPI për Resurset e Personalizuara (CR), të përdorura për validimin (në anën e serverit) e resurseve K8s, të përcaktuar nga përdoruesi (Definimi i Resurseve të Personalizuara, CRD). Publikimi i OpenAPI për CRD u lejon klientëve (p.sh., kubectl) të kryejnë validimin në anën e tyre (brenda kubectl krijo dhe kubectl apply) dhe të ofrojnë dokumentacionin për skemën (kubectl shpjego). Detajet janë në .
Logët e mëparshme me flamurin O_APPEND (dhe jo O_TRUNC) për të shmangur humbjen e logëve në disa situata dhe për lehtësinë e trunkejve të logëve me utilitarët e jashtëm për rotacionin.
Gjithashtu në kontekstin e API-ve të Kubernetes mund të theksojmë se në PodSandbox dhe PodSandboxStatus fushën runtime_handler për të evidentuar informacionin mbi RuntimeClass në pod (më shumë për të lexoni në tekstin rreth , ku kjo klasë u shfaq si një version alfa), dhe në Admission Webhooks mundësia për të përcaktuar se cilat versione AdmissionReview ato mbështesin. Përfundimisht, në rregullat e Admission Webhooks tani përdorimi i tyre në namespace dhe kufij të klasterit.
Të dhënat
, të cilat kishin status beta-që nga lëshimi , të stabilizuara (GA): ky feature gate nuk do të çaktivizohet më dhe do të hiqet në Kubernetes 1.17.
pĂ«rdorimi i variablave tĂ« mjedisit tĂ« ashtuquajtur (pĂ«r shembull, emri i pod-it) pĂ«r emrat e direktorive, tĂ« montuara si , mori zhvillim â nĂ« formĂ«n e njĂ« fushe tĂ« re subPathExpr, me ndihmĂ«n e sĂ« cilĂ«s tani pĂ«rcaktohet emri i nevojshĂ«m i direktorive. Fillimisht, kjo veçori u shfaq nĂ« Kubernetes 1.11, por pĂ«r 1.14 mbeti ende nĂ« statusin e versionit alfa.
Si dhe në lëshimin e kaluar të Kubernetes, shumë ndryshime të rëndësishme janë paraqitur për CSI (Container Storage Interface) në zhvillim aktiv:
CSI
ĂshtĂ« bĂ«rĂ« e disponueshme (nĂ« kuadĂ«r tĂ« versionit alfa) ndryshimi i madhĂ«sisĂ« pĂ«r volume tĂ« CSI.PĂ«r ta pĂ«rdorur kĂ«tĂ«, do tĂ« nevojitet aktivizimi i feature gate me emrin ExpandCSIVolumes, si dhe mbĂ«shtetje pĂ«r kĂ«tĂ« operacion nĂ« drejtuesin pĂ«rkatĂ«s tĂ« CSI.
NjĂ« tjetĂ«r veçori pĂ«r CSI nĂ« versionin alfa â tĂ« referoheni drejtpĂ«rdrejt (dmth, pa pĂ«rdorur PV/PVC) nĂ« volume tĂ« CSI brenda specifikimit tĂ« pod-eve. Kjo heq kufizimin pĂ«r pĂ«rdorimin e CSI si njĂ« depo tĂ« shpĂ«rndara, duke i hapur dyert pĂ«r ato nĂ« botĂ«n PĂ«r pĂ«rdorimin () duhet tĂ« aktivizohet CSIInlineVolume feature gate.
Ka pasur pĂ«rparim dhe nĂ« 'brendĂ«sitĂ«' e Kubernetes, tĂ« lidhura me CSI, tĂ« cilat nuk janĂ« aq tĂ« dukshme pĂ«r pĂ«rdoruesit pĂ«rfundimtarĂ« (administratorĂ«t e sistemeve)... NĂ« kĂ«tĂ« moment zhvilluesit janĂ« tĂ« detyruar tĂ« mbĂ«shtesin dy versione tĂ« çdo plugin-i tĂ« depozitĂ«s: njĂ« â 'me stilin e vjetĂ«r', brenda kodit tĂ« bazĂ«s K8s (in-tree), dhe tjetra â nĂ« kuadĂ«r tĂ« ri CSI (mĂ« shumĂ« pĂ«r tĂ« lexoni, pĂ«r shembull, nĂ« ). Kjo shkakton shqetĂ«sime tĂ« kuptueshme qĂ« duhet tĂ« zgjidhen me kalimin nĂ« CSI si tĂ« tillĂ«. Nuk Ă«shtĂ« e mundur thjesht tĂ« shpallen si tĂ« vjetra (deprecated) API tĂ« plugins pĂ«rbrenda (in-tree) pĂ«r shkak tĂ« .
. E gjithë kjo ka çuar në faktin që versionet alfa arritën të kodit të brendshëm të plugins, të implementuara si in-tree, në plugins CSI, duke e bërë që shqetësimet e zhvilluesve të reduktohen në mbështetje të një versioni të vetëm të plugins të tyre, ndërsa ruhet përputhshmëria me API-të e vjetra dhe ato mund të shpallen si të vjetra sipas skenarit të zakonshëm. Pritet që me lëshimin e ardhshëm të Kubernetes (1.15) të përfundojë migrimi i të gjithë plugins të ofruesve të cloud, implementimi do të marrë statusin beta dhe do të aktivizohet në instalimet e K8s me parazgjedhje. Detaje në . Pasojat e kësaj migrimi gjithashtu ishin e kufizimeve për volumet që përcaktohen nga ofruesit specifikë të cloud (AWS, Azure, GCE, Cinder).
Për më tepër, mbështetje për pajisje bllokuese me CSI (CSIBlockVolume) në version beta.
Nodet / Kubelet
U prezantua versioni alfa në Kubelet, i cili është i destinuar për drejtimin e metrikave për burimet kryesore. Në përgjithësi, nëse më parë Kubelet merrte statistikë mbi përdorimin e konteinerëve nga cAdvisor, tani këto të dhëna vijnë nga mjedisi i ekzekutimit të konteinerit përmes CRI (Container Runtime Interface), megjithatë mbetet edhe përputhshmëria për të punuar me versionet e vjetra të Docker. Statistikat që u grumbulluan më parë në Kubelet u drejtuan përmes REST API, tani për këtë përdoret një endpoint, i vendosur në adresën /metrics/resource/v1alpha1. Strategjia afatgjatë e zhvilluesve për të minimizuar setin e metrikave që ofrohen nga Kubelet. Për më tepër, këto metrika jo "metrika thelbësore", por "metrika burimore", dhe përshkruhen si "burime të klasës së parë, si CPU dhe memorie".
Një detaj interesant: pavarësisht përparësisë evidente në performancë të endpoint-it gRPC krahasuar me raste të ndryshme përdorimi të formatit Prometheus (rezultati i një nga benchmark-ët e shihni më poshtë), autorët preferuan formatin tekstual të Prometheus për shkak të dominimit të qartë të këtij sistemi monitorimi në komunitet.
«gRPC nuk është i përputhshëm me kanalet kryesore të monitorimit. Endpoint do të jetë i dobishëm vetëm për dorëzimin e metrikave në Metrics Server ose komponentët e monitorimit që integrohen drejtpërdrejt me të. Kur përdorim caching në Metrics Server, performanca e formatit tekstual Prometheus është mjaft e mirë për ne, për të preferuar Prometheus në vend të gRPC, duke marrë parasysh përhapjen e gjerë të Prometheus në komunitet. Kur formati OpenMetrics të bëhet më stabil, ne mund të arrijmë afërsisht performancën e gRPC me një format të bazuar në proto».

Një nga testet krahasuese të performancës së përdorimit të formateve gRPC dhe Prometheus në endpoint-in e ri të Kubelet për metrika. Më shumë grafikë dhe detaje të tjera mund të gjenden në .
Midis ndryshimeve të tjera:
- Kubelet tani (një herë) kontratë në gjendje të panjohur (unknown) para operacioneve të rinisjes dhe fshirjes.
- Kur përdoret tani i shtohet init-kontenerit Kubelet
- ka filluar të përdorë
nga furnizuesi i statistikave CRI, dhe për nodet dhe kontratat në Windowsstatistat e rrjetit. Informacioni mbi sistemin operativ dhe arkitekturën tani regjistrohet në etiketa - kubernetes.io/os
kubernetes.io/archdheobjekteve Node (përkthyer nga beta në GA).Mundësia për të specifikuar një grup të caktuar përdoruesish të sistemit për kontratat në pod ( - RunAsGroup
, u shfaq nëK8s 1.11 ) du dhe find, të përdorura në cAdvisor, - u zëvendësuan Në cli-runtime dhe kubectl
CLI
flagu -k për integrim me kustomize Shembulli i një përdorimi të thjeshtë të skedarit ):

kustomization overlays )
Për më tepër:
- kubectl create cronjob
, emri i së cilës flet për vete.kubectl logs - Në
tani mund tëkombinohen -f--follow(për streaming të logeve) dhe-l--selector(për kërkimin e etiketave).mësuan - kubectl Në komandën
- kubectl wait
flagu--allpër të zgjedhur të gjitha burimet në hapësirën e emrave të llojit të burimeve të caktuara.Statusi i qëndrueshëm (GA) e morën këto mundësi:
TĂ« tjera
ReadinessGate
- , i përdorur në specifikimin e pod-it për të përcaktuar kushtet shtesë që merren parasysh në gatishmërinë e pod-it;
- Mbështetje për faqe të mëdha (feature gate e quajtur );
- ;
- API i Prioritetit të Klasës, .
Ndryshime të tjera të prezantuara në Kubernetes 1.14:
- Politika RBAC e paracaktuar tani nuk i jep akses API
discoverydheaccess-reviewpërdoruesve pa autentikim (unauthenticated). - Mbështetje zyrtare për CoreDNS vetëm për Linux, prandaj kur përdorni kubeadm për implementimin e tij (CoreDNS) në kluster, nodet duhet të funksionojnë vetëm në Linux (për këtë kufizim përdoren nodeSelectors).
- Konfigurimi i CoreDNS i paracaktuar tani në vend të proxy. për më tepër, në CoreDNS readinessProbe, e cila parandalon balancimin e ngarkesës në podët e caktuar (të pa gatshëm për shërbim).
- Në kubeadm, në fazat
initoseupload-certs, ngarkimin e certifikatave tĂ« nevojshme pĂ«r lidhjen e njĂ« control-plane tĂ« ri me sekretin kubeadm-certs (pĂ«rdoret flag--experimental-upload-certs). - PĂ«r instalimet Windows ka njĂ« version alfa gMSA (Group Managed Service Account) â llogari tĂ« veçanta nĂ« Active Directory, tĂ« cilat mund tĂ« pĂ«rdoren gjithashtu nga kontejnerĂ«t.
- Për GCE kriptimi mTLS midis etcd dhe kube-apiserver.
- Përditësimet në softuerin e përdorur/varësisë: Go 1.12.1, CSI 1.1, CoreDNS 1.3.1, mbështetje për Docker 18.09 në kubeadm, dhe versione minimale e mbështetur e API-së Docker tani është 1.26.
P.S.
Lexoni gjithashtu në blogun tonë:
- «»;
- «»;
- «»;
- «».
Burimi: habr.com
