
Sonte njĂ« version i ri i Kubernetes â . Sipas traditĂ«s sĂ« vendosur pĂ«r blogun tonĂ«, ne po ndajmĂ« ndryshimet kyçe nĂ« kĂ«tĂ« version tĂ« kĂ«tij produkti tĂ« shkĂ«lqyer Open Source.
Informacioni i përdorur për përgatitjen e këtij materiali është marrë nga , dhe çështjet përkatëse, kërkesat për tërheqje, Propozimet e Përmirësimeve të Kubernetes (KEP).
Le të fillojmë me një hyrje të rëndësishme nga SIG cluster-lifecycle: klasterë dinamikë të qëndrueshëm Kubernetes (dhe nëse e shprehëm më saktë, atëherë realizimet HA me vetë-hostim) tani duke përdorur komandat e njohura (në kontekstin e klasterëve me një nyje) kubeadm (procesi dhe join). Nëse e përmbledhim, atëherë për këtë:
- çertifikatat e përdorura nga klasteri transferohen në sekretet;
- për të mundësuar përdorimin e klasterit etcd brenda klasterit K8s (dmth. duke u liruar nga varësia ekzistuese e jashtme) është angazhuar ;
- dokumentohen konfigurimet e rekomanduara për balancuesin e ngarkesës jashtme që siguron një konfigurim të qëndrueshëm (në të ardhmen planifikohet të mund të hiqet edhe kjo varësi, por jo në këtë etapë).

Arkitektura HA-kllusterit Kubernetes, e cila është krijuar me kubeadm
Informacionet mbi implementimin mund të gjenden në . Kjo karakteristikë ishte me të vërtetë e shumëpritur: versione alfa ishte e pritur që të dilte në K8s 1.9, por doli vetëm tani.
API
Ekipa apliko dhe në përgjithësi menaxhimi deklarativ i objekteve nga kubectl në apiserver. Vetë zhvilluesit e shpjegojnë shkurtimisht vendimin e tyre me të vërtetë se kubectl aplikoni është një pjesë themelore e punës me konfigurimet në Kubernetes, megjithatë "është e mbushur me bugs dhe është e vështirë të rregullohet", për shkak të së cilës kjo funksionalitet duhet të sillet në një formë normale dhe të kalojë në kontrollin e planeve. Shembuj të thjeshtë dhe të qartë të problemeve aktuale janë:

Detajet mbi implementimin - në . Gatishmëria aktuale - versioni alfa (promovimi në beta është planifikuar për versionin e ardhshëm të Kubernetes).
NĂ« versionin alfa Ă«shtĂ« bĂ«rĂ« e disponueshme pĂ«rdorimi i skemĂ«s OpenAPI v3 pĂ«r krijimin dhe publikimin e dokumentacionit OpenAPI pĂ«r CustomResources (CR), qĂ« pĂ«rdoren pĂ«r validimin (nĂ« anĂ«n e serverit) e burimeve K8s, tĂ« pĂ«rcaktuar nga pĂ«rdoruesi (CustomResourceDefinition, CRD). Publikimi i OpenAPI pĂ«r CRD lejon klientĂ«t (p.sh., kubectl) tĂ« kryejnĂ« validim nĂ« anĂ«n e tyre (nĂ« kuadĂ«r tĂ« kubectl krijo dhe kubectl aplikoni) dhe tĂ« jepni dokumentacionin rreth skemĂ«s (kubectl shpjego). Detajet â nĂ« .
Logët që ekzistonin më parë me flamur O_APPEND ([ O_TRUNC) për të shmangur humbjen e logëve në disa situata dhe për lehtësim të truncimit të logëve nga utilitë e jashtme për rotacionin.
Gjithashtu, në kontekstin e API-së së Kubernetes mund të theksohet se në PodSandbox dhe PodSandboxStatus fusha runtime_handler për të mbajtur informacionin në lidhje me RuntimeClass në pod (për më shumë mbi të, lexoni tekstin në lidhje me , ku ky klasë u shfaq si version alfa), dhe në Admission Webhooks mundësia për të përcaktuar cilat versione AdmissionReview ata mbështesin. Përfundimisht, në rregullat e Admission Webhooks tani shtrirjen e aplikimit të tyre nëpërmjet emrave të hapësirave dhe kuadrove të klashtër.
Kasa
, që patën status beta që nga lëshimi , të stabilizuar (GA): ky feature gate nuk ndalet 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 qĂ« montohen si , zhvilloiânĂ« formĂ«n e njĂ« fushe tĂ« re subPathExpr, me ndihmĂ«n e tĂ« cilit tani pĂ«rcaktohet emri i nevojshĂ«m i direktoriumit. Funksionaliteti fillimisht u shfaq nĂ« Kubernetes 1.11, por mbeti nĂ« statusin alfa deri nĂ« 1.14.
Si në versionin e kaluar të Kubernetes, shumë ndryshime të rëndësishme janë paraqitur për CSI (Container Storage Interface) të zhvilluar aktivisht:
CSI
Bëri të mundur (në kuadër të versionit alfa) ndryshimin e madhësisë për volumin CSI. Për ta përdorur atë, do të nevojitet aktivizimi i porteve të funksioneve të quajtura ExpandCSIVolumes, si dhe mbështetje për këtë operacion në drejtuesin e veçantë të CSI.
NjĂ« tjetĂ«r funksionalitet pĂ«r CSI nĂ« versionin alfa Ă«shtĂ« tĂ« referohesh drejtpĂ«rdrejt (dmth. pa pĂ«rdorur PV/PVC) nĂ« volumin CSI brenda specifikacionit tĂ« podâave. Kjo heq kufizimin nĂ« pĂ«rdorimin e CSI si depo tĂ« largĂ«ta ekskluzivisht, duke hapur dyert pĂ«r ta nĂ« botĂ«n e . PĂ«r ta pĂ«rdorur () nevojitet aktivizimi i CSIInlineVolume portes sĂ« funksioneve.
Ka progress i është bërë edhe në "brendinë" e Kubernetes, që lidhen me CSI, të cilat nuk janë aq të dukshme për përdoruesit e fundit (administratorët e sistemeve)... Në këtë moment, zhvilluesit janë të detyruar të mbështesin dy versione të çdo plugin ruajtjeje: njërën - "si më parë", brenda kodit K8s (in-tree), dhe tjetrën - në kuadër të CSI të ri. (lexoni më shumë për të, për shembull, në ). Kjo shkakton shqetësime të qarta që duhet të adresohen ndërsa stabilizohet CSI si i tillë. Thjesht të merrni dhe të shpallni API-të e brendshme (in-tree) si të vjetra (deprecated) nuk është e mundur për shkak të .
E gjithë kjo ka çuar në arritjen e versioneve alfa të kodit të brendshëm të plugineve., realizuar si in-tree, në plugin-e CSI, duke e bërë kështu që shqetësimet e zhvilluesve të reduktohen në mbështetje të një versioni të vetëm të plugins-eve të tyre, ndërsa kompatibiliteti me API-të e vjetra do të ruhet dhe ato do të mund të shpallen të vjetruara sipas skenarit të zakonshëm. Pritet që në versionin e ardhshëm të Kubernetes (1.15) të bëhet migrimi i të gjithë plugin-eve të ofruesve të cloud, implementimi do të marrë statusin beta dhe do të aktivizohet në instalimet K8s si standard. Detajet mund të shihen në . Pasojë e kësaj migrimi gjithashtu ishte i kufizimeve për volumet e përcaktuara nga ofruesit e caktuar të cloud (AWS, Azure, GCE, Cinder).
Përveç kësaj, mbështetja për pajisjet bllokuese me CSI (CSIBlockVolume) në versionin beta.
Nodet / Kubelet
Versioni alfa i në Kubelet, i destinuar për raportimin e metrikeve për burimet kryesore. Në përgjithësi, nëse më parë Kubelet merrte statistikat për përdorimin e konteinerëve nga cAdvisor, tani këto të dhëna vijnë nga ambienti ekzekutiv i konteinerit nëpërmjet CRI (Container Runtime Interface), megjithatë ruhet edhe përputhshmëria për të punuar me versionet e vjetra të Docker. Më parë, statistikat e mbledhura në Kubelet jepeshin përmes REST API, por tani për këtë përdoret një endpoint i vendosur në adresën /metrics/resource/v1alpha1. Strategjia afatgjatë e zhvilluesve të minimizojë grupin e metrikave që ofrohen nga Kubelet. Nga ana tjetër, këto metrika jo «core metrics», por «resource metrics», dhe përshkruhen si «first-class resources, such as cpu, and memory».
Një nuancë interesante: megjithë avantazhin e dukshëm në performancë të endpoint-it gRPC në krahasim me rastet e ndryshme të përdorimit të formatit Prometheus (rezultati i një benchmark-i më poshtë), autorët preferuan formatin tekstual të Prometheus për shkak të lidershipit të dukshëm të këtij sistemi monitorimi në komunitet.
«gRPC nuk është në përputhje me linjat kryesore të monitorimit. Endpoint-i do të jetë i dobishëm vetëm për të dërguar metrika në Metrics Server ose komponentët e monitorimit që integrohen direkt me të. Kur përdoret caching në Metrics Server, performanca e formatit të tekstit Prometheus është më e lartë. 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ë në performancën e gRPC me formatin e bazuar në proto.»

Një nga testet krahasuese të performancës midis formateve gRPC dhe Prometheus në endpoint-in e ri të Kubelet për metrika. Më shumë grafike dhe detaje të tjera mund të gjenden në .
Ndër ndryshimet e tjera:
- Kubelet tani (një herë) konteinerët në gjendje të panjohur (unknown) përpara operacioneve të rinisjes dhe fshirjes.
- Kur përdoret tani init-konteineri ka të njëjtën informacion si konteineri normal.
- Kubelet
usageNanoCoresnga ofruesi i statistikave CRI, dhe për nodet dhe konteinerët në Windows statistikat e rrjetit. - Informacion mbi sistemin operativ dhe arkitekturën tani regjistrohet në etiketa
kubernetes.io/osdhekubernetes.io/archobjekteve Node (e kaluar nga beta në GA). - Mundësia për të specifikuar një grup të caktuar përdoruesish për konteinerët në pod
RunAsGroup, është prezantuar në ) në versionin beta (aktivizuar nga e para). - du dhe find, të përdorura në cAdvisor, me implementime në Go.
CLI
Në cli-runtime dhe kubectl flaga -k për integrim me (për më tepër, zhvillimi i tij tani është në një depozitë të veçantë), dmth. për procesimin e skedarëve YAML shtesë nga direktorive të veçanta kustomizimi (detajet mbi përdorimin e tyre shihni në ):

Shembulli i përdorimit të thjeshtë të skedarit (ndërsa mund të ketë aplikime më të komplikuara kustomize brenda )
Për më tepër:
- komanda e re
kubectl create cronjob, emri i së cilës flet për vete. - Në
kubectl logstani mund të flagat-f(--followpër rrjedhjen e logeve) dhe-l(--selectorpër pyetjen e etiketimeve). - kubectl të kopjojmë skedarët, të përzgjedhur me ndihmën e wild card.
- Në komandën
kubectl waitflaga--allpër të përzgjedhur të gjitha burimet në hapësirën emërtuese të llojit të caktuar të burimeve.
TĂ« tjera
Statusi i qëndrueshëm (GA) u dha mundësive të mëposhtme:
- , i pĂ«rdorur nĂ« specifikimin e podâit pĂ«r tĂ« pĂ«rcaktuar kushte shtesĂ« qĂ« merren parasysh nĂ« gatishmĂ«rinĂ« e podâit;
- Mbështetje për faqe të mëdha (porti i quajtur );
- ;
- APIs e klasës së prioritetit, .
Ndryshime të tjera të paraqitura në Kubernetes 1.14:
- Politika RBAC për parazgjedhje nuk jep më akses në API
discoverydheaccess-reviewpërdoruesve pa autentifikim (unauthenticated). - Mbështetje zyrtare për CoreDNS vetëm për Linux, kështu që kur përdorni kubeadm për implementimin e tij (CoreDNS) në klaster, nyjet duhet të funksionojnë vetëm në Linux (për këtë kufizim përdoren nodeSelectors).
- Konfigurimi i CoreDNS pĂ«r parazgjedhje tani nĂ« vend tĂ« proxy. PĂ«r mĂ« tepĂ«r, nĂ« CoreDNS readinessProbe, qĂ« parandalon ngarkimin e trafikut nĂ« podâit pĂ«rkatĂ«s (jo tĂ« gatshĂ«m pĂ«r shĂ«rbim).
- Në kubeadm, në fazat
procesioseupload-certs, ngarkimin e certifikatave, tĂ« kĂ«rkuara pĂ«r lidhjen e njĂ« control-plane tĂ« ri me sekretin kubeadm-certs (pĂ«rdoret flags--experimental-upload-certs). - PĂ«r instalimet Windows ka dalĂ« njĂ« version alfa gMSA (Group Managed Service Account) â llogari tĂ« veçanta nĂ« Active Directory, qĂ« mund tĂ« pĂ«rdoren edhe nga konteineret.
- Për GCE kriptimi mTLS midis etcd dhe kube-apiserver.
- Përditësimet në software-n e përdorur/zbatuar: Go 1.12.1, CSI 1.1, CoreDNS 1.3.1, mbështetje për Docker 18.09 në kubeadm, ndërsa versioni minimal i mbështetur i API Docker tani është 1.26.
P.S.
Lexoni gjithashtu në blogun tonë:
- «»;
- «»;
- «»;
- «».
Burimi: habr.com
