Kubernetes 1.14: Jaunumi svarÄ«gākie

Kubernetes 1.14: Jaunumi svarÄ«gākie

Å onakt notiks nākamais Kubernetes izlaidums - 1.14. Saskaņā ar tradÄ«ciju, kas ir izveidojusies mÅ«su emuāram, mēs runājam par galvenajām izmaiņām Ŕī brÄ«niŔķīgā atvērtā pirmkoda produkta jaunajā versijā.

Å Ä« materiāla sagatavoÅ”anai izmantotā informācija ir ņemta no Kubernetes uzlabojumu izsekoÅ”anas tabulas, IZMAIŅA-1.14 un saistÄ«tie jautājumi, izvilkÅ”anas pieprasÄ«jumi, Kubernetes uzlaboÅ”anas priekÅ”likumi (KEP).

Sāksim ar svarÄ«gu ievadu no SIG klastera dzÄ«ves cikla: dinamiskās kļūmjpārlēces kopas Kubernetes (vai, precÄ«zāk sakot, paÅ”viesinātas HA izvietoÅ”anas) tagad ir var izveidot izmantojot pazÄ«stamas (viena mezgla klasteru kontekstā) komandas kubeadm (init Šø join). ÄŖsāk sakot, Å”im:

  • klastera izmantotie sertifikāti tiek nodoti noslēpumiem;
  • par iespēju izmantot etcd klasteru K8s klasterÄ« (t.i., atbrÄ«voties no iepriekÅ” esoŔās ārējās atkarÄ«bas) etcd-operators;
  • Dokumentē ieteicamos iestatÄ«jumus ārējam slodzes balansētājam, kas nodroÅ”ina kļūdu izturÄ«gu konfigurāciju (nākotnē ir plānots novērst Å”o atkarÄ«bu, bet ne Å”ajā posmā).

Kubernetes 1.14: Jaunumi svarÄ«gākie
Ar kubeadm izveidotā Kubernetes HA klastera arhitektūra

Sīkāku informāciju par ievieŔanu var atrast dizaina priekŔlikums. Šī funkcija bija patieŔām ilgi gaidīta: alfa versija tika gaidīta jau K8s 1.9 versijā, taču tā parādījās tikai tagad.

API

Komanda apply un vispārÄ«gi runājot deklaratÄ«vā objektu vadÄ«ba pagājis no kubectl apiserverā. PaÅ”i izstrādātāji Ä«si skaidro savu lēmumu ar to kubectl apply - bÅ«tiska daļa darbā ar konfigurācijām programmā Kubernetes, taču ā€œtas ir pilns ar kļūdām un grÅ«ti labojamsā€, un tāpēc Ŕī funkcionalitāte ir jāatgriež normālā stāvoklÄ« un jāpārnes uz vadÄ«bas plakni. VienkārÅ”i un skaidri piemēri mÅ«sdienu problēmām:

Kubernetes 1.14: Jaunumi svarÄ«gākie

SÄ«kāka informācija par ievieÅ”anu ir atrodama KEP. PaÅ”reizējā gatavÄ«ba ir alfa (paaugstināŔana uz beta ir plānota nākamajā Kubernetes laidienā).

Pieejams alfa versijā iespēja izmantojot OpenAPI v3 shēmu izveidot un publicēt OpenAPI dokumentāciju par CustomResources (CR), ko izmanto, lai validētu (servera puses) K8s lietotāja definētus resursus (CustomResourceDefinition, CRD). Publicējot OpenAPI for CRD, klienti (piem., kubectl) veiciet validāciju savā pusē (iekŔā kubectl create Šø kubectl apply) un izsniedz dokumentāciju saskaņā ar shēmu (kubectl explain). SÄ«kāka informācija - iekŔā KEP.

IepriekÅ” esoÅ”ie žurnāli tagad tiek atvērti ar karogu O_APPEND (bet ne O_TRUNC), lai dažās situācijās izvairÄ«tos no baļķu zudumiem un ērtākai baļķu apgrieÅ”anai ar ārējām utilÄ«tprogrammām rotācijai.

ArÄ« Kubernetes API kontekstā var atzÄ«mēt, ka in PodSandbox Šø PodSandboxStatus pievienots laukā runtime_handler lai ierakstÄ«tu informāciju par RuntimeClass podā (vairāk par to lasiet tekstā par Kubernetes 1.12 laidiens, kur Ŕī klase parādÄ«jās kā alfa versija) un programmā UzņemÅ”anas Webhooks Ä«stenota spēja noteikt, kuras versijas AdmissionReview viņi atbalsta. Visbeidzot, tagad ir spēkā UzņemÅ”anas Webhooks noteikumi var ierobežot to izmantoÅ”anas apjoms nosaukumvietās un klasteru ietvaros.

UzglabāŔana

PersistentLocalVolumes, kurai kopÅ” izlaiÅ”anas bija beta statuss K8s 1.10, paziņoja stabils (GA): Ŕīs funkcijas vārti vairs nav atspējoti un tiks noņemti Kubernetes 1.17.

Iespēja izmantojot vides mainÄ«gos, ko sauc Uz leju API (piemēram, aplikuma nosaukums) to direktoriju nosaukumiem, kas uzstādÄ«ti kā subPath, tika izstrādāts - jauna lauka veidā subPathExpr, ko tagad izmanto, lai noteiktu vēlamā direktorija nosaukumu. Sākotnēji Ŕī funkcija parādÄ«jās Kubernetes versijā 1.11, bet versijai 1.14 tā palika alfa versijas statusā.

Tāpat kā iepriekŔējā Kubernetes laidienā, aktÄ«vi attÄ«stās CSI (konteineru glabāŔanas interfeiss) ir ieviestas daudzas bÅ«tiskas izmaiņas:

CSI

Kļuvis pieejams (kā daļa no alfa versijas) atbalstÄ«t izmēru maiņa CSI sējumiem. Lai to izmantotu, jums bÅ«s jāiespējo funkciju vārti, ko sauc ExpandCSIVolumes, kā arÄ« Ŕīs darbÄ«bas atbalsta klātbÅ«tne konkrētā CSI draiverÄ«.

Vēl viena CSI funkcija alfa versijā - iespēja atsaukties tieÅ”i (t.i., neizmantojot PV/PVC) uz CSI apjomiem pod specifikācijā. Å is atceļ ierobežojumus CSI izmantoÅ”anai tikai kā attālinātai datu glabāŔanai, atverot viņiem durvis uz pasauli lokāli Ä«slaicÄ«gi sējumi. LietoÅ”anai (piemērs no dokumentācijas) ir jāiespējo CSIInlineVolume funkciju vārti.

Progress ir vērojams arÄ« ar CSI saistÄ«tajās Kubernetes ā€œiekŔējās ierÄ«cēsā€, kuras nav tik redzamas gala lietotājiem (sistēmas administratoriem) ... PaÅ”laik izstrādātāji ir spiesti atbalstÄ«t divas katra krātuves spraudņa versijas: vienu - ā€œ vecais veidsā€, K8s kodu bāzē (-kokā), bet otrais - kā daļa no jaunā CSI (vairāk par to lasiet, piemēram, in Å”eit). Tas rada saprotamas neērtÄ«bas, kas ir jānovērÅ”, stabilizējoties paÅ”am CSI. Nav iespējams vienkārÅ”i pārtraukt iekŔējo (kokā ietverto) spraudņu API darbÄ«bu, jo attiecÄ«gā Kubernetes politika.

Tas viss noveda pie tā, ka alfa versija sasniedza migrācijas process iekŔējais spraudņa kods, kas ieviests kā in-tree, CSI spraudņos, pateicoties kuriem izstrādātāju rÅ«pes tiks samazinātas lÄ«dz vienas viņu spraudņu versijas atbalstÄ«Å”anai, un saderÄ«ba ar vecajiem API saglabāsies un tie var tikt pasludināti par novecojuÅ”iem parastajā scenārijā. Paredzams, ka lÄ«dz nākamajai Kubernetes (1.15) laidienai visi mākoņpakalpojumu sniedzēja spraudņi tiks migrēti, ievieÅ”ana saņems beta statusu un pēc noklusējuma tiks aktivizēta K8s instalācijās. SÄ«kāku informāciju sk dizaina priekÅ”likums. Å Ä«s migrācijas rezultātā arÄ« neveiksme no skaļuma ierobežojumiem, ko nosaka konkrēti mākoņpakalpojumu sniedzēji (AWS, Azure, GCE, Cinder).

Turklāt atbalsts bloku ierīcēm ar CSI (CSIBlockVolume) nodots uz beta versiju.

Mezgli / Kubelet

Prezentēta alfa versija jauns galapunkts in Kubelet, kas paredzēts atdeves metriku par galvenajiem resursiem. VispārÄ«gi runājot, ja iepriekÅ” Kubelet saņēma statistiku par konteinera lietojumu no cAdvisor, tagad Å”ie dati nāk no konteinera izpildlaika vides, izmantojot CRI (Container Runtime Interface), taču tiek saglabāta arÄ« saderÄ«ba darbam ar vecākām Docker versijām. IepriekÅ” Kubelet apkopotā statistika tika nosÅ«tÄ«ta, izmantojot REST API, bet tagad galapunkts atrodas plkst /metrics/resource/v1alpha1. Izstrādātāju ilgtermiņa stratēģija ir ir samazināt Kubelet nodroÅ”ināto metrikas kopu. Starp citu, paÅ”i Å”ie rādÄ«tāji tagad viņi zvana nevis ā€œpamatmetrikaā€, bet ā€œresursu metrikaā€, un tie tiek raksturoti kā ā€œpirmās klases resursi, piemēram, centrālais procesors un atmiņaā€.

Ä»oti interesanta nianse: neskatoties uz nepārprotamo gRPC galapunkta veiktspējas priekÅ”rocÄ«bu salÄ«dzinājumā ar dažādiem Prometheus formāta izmantoÅ”anas gadÄ«jumiem (skatiet zemāk viena no etaloniem rezultātu), autori deva priekÅ”roku Prometheus teksta formātam, jo ā€‹ā€‹Å”Ä« pārraudzÄ«bas sistēma sabiedrÄ«bā skaidri vadās.

ā€œgRPC nav savietojams ar galvenajiem monitoringa cauruļvadiem. Galapunkts bÅ«s noderÄ«gs tikai metrikas piegādei uz Metrics Server vai pārraudzÄ«bas komponentiem, kas ir tieÅ”i integrēti ar to. Prometheus teksta formāta veiktspēja, izmantojot Metrics Server keÅ”atmiņu pietiekami labs lai mēs dotu priekÅ”roku Prometheus, nevis gRPC, ņemot vērā Prometheus plaÅ”i izplatÄ«to ievieÅ”anu sabiedrÄ«bā. TiklÄ«dz OpenMetrics formāts kļūs stabilāks, mēs varēsim tuvoties gRPC veiktspējai, izmantojot prototipa formātu.

Kubernetes 1.14: Jaunumi svarÄ«gākie
Viens no salÄ«dzinoÅ”ajiem veiktspējas testiem, izmantojot gRPC un Prometheus formātus jaunajā Kubelet metriku galapunktā. Vairāk grafiku un citu informāciju var atrast KEP.

Starp citām izmaiņām:

  • Kubelet tagad (vienu reizi) mēģinot apstāties konteineri nezināmā stāvoklÄ« pirms restartÄ“Å”anas un dzÄ“Å”anas darbÄ«bas.
  • Lietojot PodPresets tagad uz init konteineru ir pievienots tāda pati informācija kā parastam konteineram.
  • kubelet sāka lietot usageNanoCores no CRI statistikas nodroÅ”inātāja, kā arÄ« mezgliem un konteineriem operētājsistēmā Windows pievienots tÄ«kla statistika.
  • Operētājsistēmas un arhitektÅ«ras informācija tagad tiek ierakstÄ«ta etiÄ·etēs kubernetes.io/os Šø kubernetes.io/arch Mezglu objekti (pārsÅ«tÄ«ti no beta uz GA).
  • Iespēja norādÄ«t konkrētu sistēmas lietotāju grupu konteineriem podā (RunAsGroup, parādÄ«jās K8s 1.11) uzlabotas pirms beta versijas (iespējota pēc noklusējuma).
  • du un atrast, ko izmanto cAdvisor, aizstāts on Go ievieÅ”ana.

CLI

Cli-runtime un kubectl piebilda -k karodziņŔ integrācijai ar pielāgot (starp citu, tā izstrāde tagad tiek veikta atseviŔķā repozitorijā), t.i. lai apstrādātu papildu YAML failus no Ä«paÅ”iem kustomizācijas direktorijiem (sÄ«kāku informāciju par to izmantoÅ”anu skatiet KEP):

Kubernetes 1.14: Jaunumi svarÄ«gākie
VienkārÅ”a failu izmantoÅ”anas piemērs pielāgoÅ”ana (iekÅ”pusē ir iespējama sarežģītāka kustomize pielietoÅ”ana Pārklājumi)

Turklāt:

  • Pievienots jauna komanda kubectl create cronjob, kura nosaukums runā pats par sevi.
  • Š’ kubectl logs tagad Tu vari apvienot karogi -f (--follow žurnālu straumÄ“Å”anai) un -l (--selector etiÄ·etes vaicājumam).
  • kubectl mācÄ«ja kopēt failus, kas atlasÄ«ti ar aizstājējzÄ«mi.
  • Uz komandu kubectl wait piebilda karogs --all lai atlasÄ«tu visus resursus norādÄ«tā resursa tipa nosaukumvietā.

Pārējie

Tālāk norādÄ«tajām iespējām ir pieŔķirts stabils (GA) statuss:

Citas Kubernetes 1.14 ieviestās izmaiņas:

  • Noklusējuma RBAC politika vairs neļauj piekļūt API discovery Šø access-review lietotāji bez autentifikācijas (neautentificēts).
  • Oficiālais CoreDNS atbalsts nodroÅ”ināta Tikai Linux, tādēļ, izmantojot kubeadm, lai to izvietotu klasterÄ« (CoreDNS), mezgliem ir jādarbojas tikai operētājsistēmā Linux (Å”im ierobežojumam tiek izmantoti nodeSelectors).
  • Tagad ir noklusējuma CoreDNS konfigurācija izmanto pārsÅ«tÄ«t spraudni starpniekservera vietā. ArÄ« CoreDNS pievienots ReadinessProbe, kas novērÅ” slodzes lÄ«dzsvaroÅ”anu uz atbilstoÅ”iem (servisam nav gataviem) podiem.
  • In kubeadm, uz fāzēm init vai upload-certs, kļuva iespējams ielādējiet sertifikātus, kas nepiecieÅ”ami, lai jauno vadÄ«bas plakni savienotu ar kubeadm-certs noslēpumu (izmantojiet karogu --experimental-upload-certs).
  • Windows instalācijām ir parādÄ«jusies alfa versija atbalstu gMSA (Group Managed Service Account) ā€” Ä«paÅ”i konti Active Directory, ko var izmantot arÄ« konteineri.
  • Par G.C.E. aktivizēts mTLS Å”ifrÄ“Å”ana starp etcd un kube-apiserver.
  • Lietotās/atkarÄ«gās programmatÅ«ras atjauninājumi: Go 1.12.1, CSI 1.1, CoreDNS 1.3.1, Docker 18.09 atbalsts programmā kubeadm, un minimālā atbalstÄ«tā Docker API versija tagad ir 1.26.

PS

Lasi arī mūsu emuārā:

Avots: www.habr.com

Pievieno komentāru