Å 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Ä).
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Ä«bapagÄ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:
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 Šø PodSandboxStatuspievienots 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Ä«tizmÄ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.
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 lietotusageNanoCores 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):
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 izmantopÄ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.