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 sniedzēja, kā arī mezgliem un konteineriem 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 priekš Linux, tāpēc, izmantojot kubeadm tā izvietošanai (CoreDNS) klasterī, mezgliem vajadzētu darboties tikai 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).
  • Par Windows-Ir parādījusies instalāciju 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

Iegādājieties uzticamu mitināšanu vietnēm ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa vietņu mitināšanu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster