Kubernetes 1.14: nyocha nke isi ihe ọhụrụ

Kubernetes 1.14: nyocha nke isi ihe ọhụrụ

Abalị a ga-eme Mwepụta ọzọ nke Kubernetes - 1.14. Dị ka ọdịnala nke mepụtara maka blọọgụ anyị, anyị na-ekwu maka mgbanwe ndị dị na ụdị ọhụrụ nke ngwaahịa Open Source a dị ebube.

A na-ewepụta ozi eji akwadebe ihe a Tebụl nlekota nkwalite Kubernetes, Mgbanwe-1.14 na okwu ndị metụtara ya, dọpụta arịrịọ, Kubernetes Enhancement Proposals (KEP).

Ka anyị were mmalite dị mkpa sitere na SIG cluster-lifecycle: dynamic failover ụyọkọ Kubernetes (ma ọ bụ ka ọ bụrụ nke ziri ezi, ntinye nke HA na-akwado onwe ya) dị ugbu a enwere ike ịmepụta iji iwu maara nke ọma (n'ọnọdụ nke ụyọkọ ọnụ otu ọnụ). kubeadm (init и join). Na nkenke, maka nke a:

  • A na-ebufe akwụkwọ ikike nke ụyọkọ ahụ na nzuzo;
  • maka ohere nke iji ụyọkọ etcd n'ime ụyọkọ K8s (ya bụ, iwepụ ndabere mpụga dị na mbụ) wdgd-onye ọrụ;
  • Detuo ntọala akwadoro maka onye na-ebu ibu dị n'èzí nke na-enye nhazi mmejọ na-adịghị mma (n'ọdịnihu a na-eme atụmatụ ikpochapụ ndabere a, mana ọ bụghị n'oge a).

Kubernetes 1.14: nyocha nke isi ihe ọhụrụ
Nhazi nke ụyọkọ Kubernetes HA nke ejiri kubeadm mepụta

Enwere ike ịchọta nkọwa nke mmejuputa ya na imewe amụma. A na-echere atụmatụ a ogologo oge: a na-atụ anya ụdị alfa azụ na K8s 1.9, mana ọ pụtara naanị ugbu a.

API

otu apply na n'ozuzu njikwa ihe nkwuputa gafere si kubectl na apiserver. Ndị mmepe onwe ha na-akọwa nkenke mkpebi ha site n'ikwu nke ahụ kubectl apply - akụkụ dị mkpa nke ịrụ ọrụ na nhazi na Kubernetes, Otú ọ dị, "ọ juputara na ahụhụ ma sie ike idozi," ya mere, ọ dị mkpa ka a weghachite ọrụ a na nkịtị ma bufee ya na ụgbọ elu njikwa. Ihe atụ dị mfe ma doo anya nke nsogbu dị taa:

Kubernetes 1.14: nyocha nke isi ihe ọhụrụ

Nkọwa gbasara mmejuputa atumatu Igodo. Njikere ugbu a bụ alfa (nkwalite na beta na-eme atụmatụ maka mwepụta Kubernetes na-esote).

Emere ya na ụdị alfa ohere iji atụmatụ OpenAPI v3 maka imepụta na ibipụta akwụkwọ OpenAPI maka CustomResources (CR) eji akwado (akụkụ nkesa) akụrụngwa akọwapụtara onye ọrụ K8 (CustomResourceDefinition, CRD). Ibipụta OpenAPI maka CRD na-enye ndị ahịa ohere (dịka. kubectl) mee nkwado n'akụkụ gị (n'ime kubectl create и kubectl apply) ma wepụta akwụkwọ dịka atụmatụ ahụ si dị (kubectl explain). Nkọwa - na Igodo.

Ndekọ ndị dịbu adị na-emeghe ugbu a na ọkọlọtọ O_APPEND (ma ọ bụghị O_TRUNC) iji zere ọnwụ nke ndekọ n'ọnọdụ ụfọdụ yana maka ịdị mma nke ịkpụ osisi na ihe ndị dị na mpụga maka ntụgharị.

Ọzọkwa n'ọnọdụ nke Kubernetes API, enwere ike ịhụ na n'ime PodSandbox и PodSandboxStatus agbakwunyere ubi runtime_handler ka ịdekọ ozi gbasara RuntimeClass na pọd (gụkwuo banyere ya na ederede banyere Mwepụta Kubernetes 1.12, ebe klaasị a pụtara dị ka ụdị alfa), yana na Webhooks nnabata emejuputa atumatu ike ikpebi nke nsụgharị AdmissionReview ha na-akwado. N'ikpeazụ, iwu nnabata Webhooks dị ugbu a nwere ike kpachie oke ojiji ha nwere site na aha oghere na usoro ụyọkọ.

Nchekwa

PersistentLocalVolumes, nke nwere ọkwa beta kemgbe ewepụtara ya K8s 1.10, бъявлбъявлены kwụsiri ike (GA): ọnụ ụzọ njirimara a enwekwaghị nkwarụ, a ga-ewepụ ya na Kubernetes 1.17.

Ohere iji mgbanwe gburugburu ebe obibi a na-akpọ API mgbada (dịka ọmụmaatụ, aha pod aha) n'ihi na aha akwụkwọ ndekọ aha n'ịnyịnya dị ka subPath, e mepụtara - n'ụdị ubi ọhụrụ subPathExpr, nke a na-eji ugbu a iji chọpụta aha ndekọ aha achọrọ. Njirimara ahụ pụtara na mbụ na Kubernetes 1.11, mana maka 1.14 ọ nọgidere na ọkwa ụdị alfa.

Dịka ọ dị na ntọhapụ Kubernetes gara aga, ewebata ọtụtụ mgbanwe dị ịrịba ama maka CSI na-arụsi ọrụ ike (Container Storage Interface):

CSI

Ọ bịara dị (dịka akụkụ nke ụdị alfa) nkwado Mgbanwe maka mpịakọta CSI. Iji jiri ya, ị ga-eme ka ọnụ ụzọ njirimara a na-akpọ ExpandCSIVolumes, yana nkwado maka ọrụ a na onye ọkwọ ụgbọ ala CSI.

Akụkụ ọzọ maka CSI na ụdị alfa - ohere rụtụ aka ozugbo (ya bụ, na-ejighị PV/PVC) gaa na mpịakọta CSI n'ime nkọwapụta pọd. Nke a na-ewepụ mmachi na iji CSI dị ka nchekwa data dịpụrụ adịpụ, na-emeghere ha ụzọ nke ụwa mpịakọta ephemeral mpaghara. Maka ojiji (ihe atụ si akwụkwọ) ga-agbanyerịrị CSIInlineVolume ọnụ ụzọ ámá.

Enwekwara ọganihu na "internals" nke Kubernetes metụtara CSI, nke a na-adịghị ahụ anya maka ndị ọrụ njedebe (ndị nchịkwa usoro) ... Ugbu a, a na-amanye ndị mmepe ịkwado ụdị abụọ nke ngwa mgbakwunye nchekwa ọ bụla: otu - "na ụzọ ochie", n'ime K8s codebase (na-osisi), na nke abụọ - dịka akụkụ nke CSI ọhụrụ. (gụkwuo maka ya, ọmụmaatụ, na ebe a). Nke a na-ebute nsogbu ndị nwere nghọta nke kwesịrị ka e lebara ya anya dị ka CSI n'onwe ya na-edozi. Ọ gaghị ekwe omume naanị iwepụ API nke plugins n'ime (n'ime osisi) n'ihi mkpa Kubernetes amụma.

Ihe a niile mere ka eziokwu ahụ bụrụ na ụdị alfa ruru usoro mbughari koodu mgbakwunye ime, emejuputa atumatu dị ka in-osisi, na CSI plugins, ekele nke nchegbu nke mmepe ga-ebelata na-akwado otu version nke plugins ha, na ndakọrịta na ochie API ga-anọgide na ha nwere ike na-ekwupụta na-adịghị adịkwaghị na mbụ dịruru ná njọ. A na-atụ anya na site na mwepụta ọzọ nke Kubernetes (1.15) plugins ndị na-eweta igwe ojii ga-akwaga, mmejuputa a ga-enweta ọkwa beta ma ga-arụ ọrụ na nrụnye K8s na ndabara. Maka nkọwa, hụ imewe amụma. Mbugharị a rụpụtakwara okpu site na oke olu akọwapụtara site na ndị na-eweta igwe ojii (AWS, Azure, GCE, Cinder).

Na mgbakwunye, nkwado maka ngọngọ ngwaọrụ nwere CSI (CSIBlockVolume) bufere na ụdị beta.

Ọnụ ụzọ/Kubelet

E gosipụtara ụdị Alfa njedebe ọhụrụ na Kubelet, emebere maka weghachi metrik na akụrụngwa isi. N'ikwu okwu n'ozuzu, ọ bụrụ na Kubelet na-anatabu ọnụ ọgụgụ maka ojiji akpa site na cAdvisor, ugbu a data a sitere na ebe a na-agba ọsọ oge site na CRI (Container Runtime Interface), mana a na-echekwa ndakọrịta maka ịrụ ọrụ na ụdị Docker ochie. Na mbụ, e zigara ọnụ ọgụgụ ndị anakọtara na Kubelet site na REST API, mana ugbu a ebe njedebe dị na /metrics/resource/v1alpha1. Atụmatụ ogologo oge nke ndị mmepe bụ bụ ibelata usoro metrik nke Kubelet nyere. Site n'ụzọ, metrik ndị a n'onwe ha ugbu a ha na-akpọ ọ bụghị "isi metrik", kama " metrics akụrụngwa ", ma kọwapụtara ya dị ka "akụrụngwa nke mbụ, dị ka cpu, na ebe nchekwa".

Nuance na-adọrọ mmasị nke ukwuu: n'agbanyeghị uru arụmọrụ doro anya nke njedebe gRPC ma e jiri ya tụnyere ụdị dị iche iche nke iji usoro Prometheus. (lee nsonaazụ nke otu n'ime akara n'okpuru), ndị edemede họọrọ usoro ederede nke Prometheus n'ihi nduzi doro anya nke usoro nlekota oru a na obodo.

“gRPC adabaghị na pipeline nleba anya. Ebe njedebe ga-aba uru naanị maka ibuga metrik na Metrics Server ma ọ bụ ihe nleba anya nke jikọtara ya na ya ozugbo. Ịrụ ọrụ usoro ederede Prometheus mgbe ị na-eji caching na Metrics Server zuru oke ka anyị na-ahọrọ Prometheus karịa gRPC n'ihi nnabata nke Prometheus n'ime obodo. Ozugbo usoro OpenMetrics bịara kwụsie ike, anyị ga-enwe ike iji usoro dabere na ọrụ gRPC. "

Kubernetes 1.14: nyocha nke isi ihe ọhụrụ
Otu n'ime ule arụmọrụ atụnyere nke iji gRPC na usoro Prometheus na njedebe Kubelet ọhụrụ maka metrik. Enwere ike ịhụ eserese ndị ọzọ na nkọwa ndị ọzọ na Igodo.

N'ime mgbanwe ndị ọzọ:

  • Kubelet ugbu a (otu oge) na-agbalị ịkwụsị arịa dị na steeti amaghị tupu ịmalitegharịa ma hichapụ ọrụ.
  • Mgbe ị na-eji PodPresets ugbu a na akpa init gbakwunyere otu ozi dị ka maka akpa mgbe niile.
  • kubelet malitere iji usageNanoCores site na onye na-eweta ọnụ ọgụgụ CRI, yana maka ọnụ ọnụ na arịa na Windows agbakwunyere ọnụ ọgụgụ netwọk.
  • A na-edekọ sistemụ arụmọrụ na ozi ihe owuwu ugbu a na akara kubernetes.io/os и kubernetes.io/arch Ihe node (ebufere site na beta gaa GA).
  • Ikike ịkọwapụta otu ndị ọrụ sistemụ maka arịa dị na pọd (RunAsGroup, pụtara na K8s 1.11) elu tupu beta (nke ndabara kwadoro).
  • du wee chọta eji na cAdvisor, dochie na Go mmejuputa iwu.

CLI

Na cli-oge ojiri gaa na kubectl gbakwunyere -k ọkọlọtọ maka mwekota na hazie (site n'ụzọ, a na-eme mmepe ya ugbu a na ebe nchekwa dị iche), ya bụ. iji hazie faịlụ YAML agbakwunyere site na akwụkwọ ndekọ aha kustomization pụrụ iche (maka nkọwa gbasara iji ha, lee Igodo):

Kubernetes 1.14: nyocha nke isi ihe ọhụrụ
Ọmụmaatụ nke ojiji faịlụ dị mfe nhazi (a ọzọ mgbagwoju ngwa kustomize kwere omume n'ime kpuchie)

Na mgbakwunye:

  • agbakwunyere otu ọhụrụ kubectl create cronjob, onye aha ya na-ekwu maka onwe ya.
  • В kubectl logs ugbu a ị nwere ike jikota ọkọlọtọ -f (--follow maka gụgharia ndekọ) na -l (--selector maka ajụjụ labelụ).
  • kubectl kụziiri detuo faịlụ site na kaadị ọhịa ahọpụtara.
  • Nye otu kubectl wait agbakwunyere ọkọlọtọ --all ka ịhọrọ akụrụngwa niile n'aha aha nke ụdị akụrụngwa akọwapụtara.

Ndị ọzọ

Ike ndị a enwetala ọkwa kwụsiri ike (GA):

Mgbanwe ndị ọzọ ewebata na Kubernetes 1.14:

  • Amụma RBAC ezighi ezi anaghịkwa enye ohere API discovery и access-review ndị ọrụ na-enweghị nyocha (enweghị nkwenye).
  • Nkwado CoreDNS gọọmentị kwadoro Linux naanị, yabụ mgbe ị na-eji kubeadm ibuga ya (CoreDNS) na ụyọkọ, ọnụ ga-agba ọsọ na Linux (a na-eji nodeSelectors maka oke a).
  • Nhazi CoreDNS dị ugbu a na -eji n'ihu ngwa mgbakwunye kama ịbụ onye nnọchiteanya. Ọzọkwa, na CoreDNS agbakwunyere readinessProbe, nke na-egbochi nguzozi ibu na pọd kwesịrị ekwesị (adịghị njikere maka ọrụ).
  • Na kubeadm, na usoro init ma ọ bụ upload-certs, wee kwe omume Ibunye asambodo achọrọ iji jikọọ ụgbọ elu njikwa ọhụrụ na nzuzo kubeadm-certs (jiri ọkọlọtọ --experimental-upload-certs).
  • Ụdị alfa apụtala maka nrụnye Windows nkwado gMSA (Akaụntụ Ọrụ Ejikwa Otu) - akaụntụ pụrụ iche na ndekọ ndekọ nke nwekwara ike iji ya mee ihe.
  • Maka G.C.E. arụ ọrụ mTLS izo ya ezo n'etiti wdgd na kube-apiserver.
  • Mmelite na ngwa eji eme ihe/dabere: Gaa 1.12.1, CSI 1.1, CoreDNS 1.3.1, nkwado Docker 18.09 na kubeadm, yana ụdị Docker API kacha akwadoro bụ ugbu a 1.26.

PS

Gụọkwa na blọọgụ anyị:

isi: www.habr.com

Tinye a comment