I-Ephemeral Volumes Nokulandelela Umthamo Wesitoreji: I-EmptyDir kuma-Steroids

I-Ephemeral Volumes Nokulandelela Umthamo Wesitoreji: I-EmptyDir kuma-Steroids

Ezinye izinhlelo zokusebenza nazo zidinga ukugcina idatha, kodwa zikhululekile ngeqiniso lokuthi idatha ngeke ilondolozwe ngemva kokuqala kabusha.

Isibonelo, amasevisi okulondoloza inqolobane anqunyelwe yi-RAM, kodwa angaphinde ahambise idatha engavamile ukusetshenziselwa isitoreji ehamba kancane kune-RAM, enomthelela omncane ekusebenzeni kwakho konke. Ezinye izinhlelo zokusebenza zidinga ukuqaphela ukuthi kungase kube khona okokufaka ukufunda kuphela kumafayela, njengezilungiselelo noma okhiye abayimfihlo.

I-Kubernetes isivele inezinhlobo ezimbalwa imiqulu ye-ephemeral, kodwa ukusebenza kwawo kukhawulelwe kulokho okusetshenziswa kuma-K8s.

I-Ephemeral Amavolumu we-CSI ivumele i-Kubernetes ukuthi inwetshwe nabashayeli be-CSI ukuze banikeze ukwesekwa kwamavolumu asendaweni angasindi. Ngale ndlela kungenzeka ukusebenzisa izakhiwo ezingafuneki: izilungiselelo, izimfihlo, idatha yokuhlonza, okuguquguqukayo, nokunye. Abashayeli be-CSI kufanele bashintshwe ukuze basekele lesi sici se-Kubernetes, njengoba kucatshangwa ukuthi abashayeli abajwayelekile abajwayelekile ngeke basebenze - kodwa kucatshangwa ukuthi amavolumu anjalo angasetshenziswa kunoma iyiphi i-node ekhethiwe ye-pod.

Lokhu kungase kube inkinga kumavolumu asebenzisa izinsiza ezibalulekile zokusingatha noma isitoreji esitholakala kuphela kwabanye ababungazi. Kungakho i-Kubernetes 1.19 yethula izici ezimbili ezintsha zevolumu yokuhlola ye-alpha ezifana ngokomqondo nevolumu ye-EmptyDir:

  • inhloso jikelele imiqulu ephemeral;

  • Ukulandelela umthamo wesitoreji se-CSI.

Izinzuzo zendlela entsha:

  • isitoreji singaba sendawo noma sixhunywe ngenethiwekhi;

  • amavolumu angaba nosayizi othile ongeke weqiwe uhlelo lokusebenza;

  • isebenza nanoma yimaphi abashayeli be-CSI abasekela ukuhlinzekwa kwamavolumu aqhubekayo futhi (ukusekela ukulandelela umthamo) sebenzisa ucingo GetCapacity;

  • amavolumu angase abe nedatha ethile yokuqala kuye ngomshayeli nezilungiselelo;

  • yonke imisebenzi ejwayelekile enevolumu (ukudala isifinyezo, ukushintsha usayizi, njll.) kuyasekelwa;

  • amavolumu angasetshenziswa nanoma yisiphi isilawuli sohlelo lokusebenza esamukela imojuli noma ukucaciswa kwevolumu;

  • Isihleli se-Kubernetes sikhetha ama-node afanelekile ngokwaso, ngakho-ke asisekho isidingo sokuhlinzeka nokumisa izandiso zeshejuli noma ukuguqula ama-webhooks.

Izinketho zohlelo lokusebenza

Ngakho-ke, izinhloso ezijwayelekile ze-ephemeral zilungele izimo zokusetshenziswa ezilandelayo:

Inkumbulo eqhubekayo njengokungena esikhundleni se-RAM ye-memcached

Ukukhishwa kwakamuva kwe-memcached ukwesekwa okwengeziwe usebenzisa inkumbulo eqhubekayo (Intel Optane, njll., cishe. umhumushi) esikhundleni se-RAM evamile. Uma usebenzisa i-memcached ngesilawuli sohlelo lokusebenza, ungasebenzisa inhloso evamile yamavolumu ephemeral ukuze ucele ukuthi ivolumu yosayizi onikeziwe inikezwe ku-PMEM kusetshenziswa umshayeli we-CSI, isibonelo. I-PMEM-CSI.

Isitoreji sendawo se-LVM njengendawo yokusebenza

Izinhlelo zokusebenza ezisebenza ngedatha enkulu kune-RAM zingase zidinge isitoreji sasendaweni esinosayizi noma amamethrikhi okusebenza lawo amavolumu avamile e-EmptyDir avela ku-Kubernetes angakwazi ukuhlinzeka ngawo. Ngokwesibonelo, kwabhalwa ngale njongo TopoLVM.

Ukufinyelela kokufunda kuphela kwamavolumu edatha

Ukwabiwa kwevolumu kungaholela ekudalweni kwevolumu egcwele lapho:

Le miqulu ingafakwa kumodi yokufunda kuphela.

Kanjani lo msebenzi

Inhloso Ejwayelekile Ephemeral Volumes

Isici esiyinhloko senhloso evamile ye-ephemeral volume umthombo omusha wevolumu, EphemeralVolumeSource, equkethe zonke izinkambu zokudala isicelo sevolumu (ngokomlando esibizwa ngokuthi isicelo sevolumu eqhubekayo, i-PVC). Isilawuli esisha singenile kube-controller-manager ibheka ama-pods akha umthombo onjalo wevolumu, bese idala i-PVC yalawo ma-pods. Kumshayeli we-CSI, lesi sicelo sibukeka sifana nezinye, ngakho-ke akukho ukusekelwa okukhethekile okudingekayo lapha.

Uma nje ama-PVC anjalo ekhona, angasetshenziswa njenganoma yiziphi ezinye izicelo kuvolumu. Ikakhulukazi, zingabhekiselwa njengomthombo wedatha lapho ukopisha ivolumu noma udala isifinyezo esivela kuvolumu. Into ye-PVC iqukethe nesimo samanje sevolumu.

Amagama ama-PVC adalwe ngokuzenzakalelayo achazwe ngaphambilini: ayinhlanganisela yegama le-pod kanye negama levolumu, ahlukaniswe i-hyphen. Amagama achazwe ngaphambilini enza kube lula ukusebenzisana ne-PVC ngoba akudingekile ukuthi uyibheke uma ulazi igama le-pod negama levolumu. Okubi ukuthi kungenzeka ukuthi igama selivele liyasetshenziswa, elitholwa yi-Kubernetes futhi ngenxa yalokho i-pod ivinjiwe ukuthi iqale.

Ukuqinisekisa ukuthi ivolumu iyasuswa kanye ne-pod, isilawuli senza isicelo kuvolumu ngaphansi komnikazi. Lapho i-pod isusiwe, indlela evamile yokuqoqa udoti iyasebenza, esusa kokubili isicelo kanye nevolumu.

Izicelo zifaniswa umshayeli wesitoreji ngokusebenzisa indlela evamile yekilasi lokulondoloza. Yize amakilasi anesibopho esisheshayo nesiphuzile (aka WaitForFirstConsumer) ziyasekelwa, emiqulu ye-ephemeral kunengqondo ukuyisebenzisa WaitForFirstConsumer, bese umhleli angacabangela kokubili ukusetshenziswa kwenodi nokutholakala kwesitoreji lapho ekhetha indawo. Isici esisha sivela lapha.

Ukulandelela Umthamo Wesitoreji

Ngokuvamile umhleli akanalo ulwazi lokuthi umshayeli we-CSI uzodala kuphi ivolumu. Ayikho futhi indlela yokuthi umhleli axhumane nomshayeli ngokuqondile ukuze acele lolu lwazi. Ngakho-ke, i-schedule polls node kuze kube yilapho ithola eyodwa okungafinyelelwa kuyo amavolumu (isibopho sekwephuzile) noma ishiya ukukhetha kwendawo ngokuphelele kumshayeli (okubopha ngokushesha).

Kusha API CSIStorageCapacity, esesigabeni se-alpha, ivumela idatha edingekayo ukuthi igcinwe ku- etcd ukuze itholakale kusihleli. Ngokungafani nokusekelwa kwezinhloso ezijwayelekile zamavolumu ephemeral, lapho uphakela umshayeli, kufanele unike amandla ukulandelela umthamo wesitoreji: external-provisioner kufanele ishicilele ulwazi lomthamo olutholwe kumshayeli ngendlela evamile GetCapacity.

Uma umhleli edinga ukukhetha indawo ye-pod enevolumu engaboshiwe esebenzisa ukubopha sekwephuzile, futhi umshayeli unike amandla lesi sici phakathi nokuthunyelwa ngokusetha ifulegi. CSIDriver.storageCapacity, bese amanodi angenawo amandla okugcina okwanele azolahlwa ngokuzenzakalelayo. Lokhu kusebenza kuzo zombili izinjongo ezijwayelekile ze-ephemeral kanye nevolumu eqhubekayo, kodwa hhayi kumavolumu ephemeral e-CSI ngoba amapharamitha awo awakwazi ukufundwa yi-Kubernetes.

Njengenjwayelo, amavolumu axhumene ngokushesha ayakhiwa ngaphambi kokuba ama-pods ahlelwe, futhi ukubekwa kwawo kukhethwa umshayeli wesitoreji, ngakho-ke lapho ulungiselela. external-provisioner Ngokuzenzakalela, amakilasi esitoreji abopha ngokushesha ayeqiwa, njengoba le datha ngeke isetshenziswe noma kunjalo.

Njengoba umhleli we-kubernetes ephoqeleka ukuthi asebenze ngolwazi okungenzeka luphelelwe yisikhathi, asikho isiqinisekiso sokuthi umthamo uzotholakala kuzo zonke izimo lapho ivolumu idaliwe, kodwa amathuba okuthi izokwakhiwa ngaphandle kokuzama futhi ayandiswa.

NB Ungathola ulwazi oluningiliziwe, kanye "nokuprakthiza ngokuphepha endaweni yamakati", futhi uma kwenzeka isimo esingaqondakali ngokuphelele, thola usizo olufanelekayo lokusekelwa kwezobuchwepheshe ezifundweni ezijulile - Kubernetes Base izoba ngoSepthemba 28-30, kanye nochwepheshe abathuthuke kakhulu Kubernetes Mega Okthoba 14-16.

Ukuphepha

CSIstorageCapacity

Izinto ze-CSIStorageCapacity zihlala ezindaweni zamagama; lapho ukhipha umshayeli ngamunye we-CSI endaweni yakhe yegama, kuyanconywa ukuthi kukhawulelwe amalungelo e-RBAC ku-CSIStorageCapacity kuleso sikhala njengoba kusobala ukuthi idatha ivela kuphi. I-Kubernetes ayikubheki lokhu noma kunjalo, futhi ngokuvamile abashayeli bafakwa endaweni yamagama efanayo, ngakho-ke ekugcineni kulindeleke ukuthi abashayeli basebenze futhi bangashicileli idatha engalungile (futhi yilapho ikhadi lami lehluleka khona, cishe. umhumushi osuselwe ehlayeni elinentshebe)

Inhloso Ejwayelekile Ephemeral Volumes

Uma abasebenzisi benamalungelo okudala i-pod (ngokuqondile noma ngokungaqondile), bazokwazi futhi ukudala amavolumu enhloso evamile ngisho noma bengenawo amalungelo okudala isicelo ngevolumu. Lokhu kungenxa yokuthi ukuhlolwa kwemvume ye-RBAC kusetshenziswa kusilawuli esidala i-PVC, hhayi kumsebenzisi. Lolu wushintsho olukhulu oluzongezwa ku-akhawunti yakho, ngaphambi kokunika lesi sici amandla kumaqoqo lapho abasebenzisi abangathembekile kungafanele babe namalungelo okudala amavolumu.

Isibonelo:

Hlukanisa igatsha I-PMEM-CSI iqukethe zonke izinguquko ezidingekayo ukuze usebenzise iqoqo le-Kubernetes 1.19 ngaphakathi kwemishini ebonakalayo ye-QEMU enazo zonke izici ezisesiteji se-alpha. Ikhodi yomshayeli ayishintshile, ukuthunyelwa kuphela okushintshile.

Emshinini ofanelekile (i-Linux, umsebenzisi ojwayelekile angasebenzisa Docker, bheka lapha imininingwane) le miyalo izoveza iqoqo futhi ifake umshayeli we-PMEM-CSI:

git clone --branch=kubernetes-1-19-blog-post https://github.com/intel/pmem-csi.git
cd pmem-csi
export TEST_KUBERNETES_VERSION=1.19 TEST_FEATURE_GATES=CSIStorageCapacity=true,GenericEphemeralVolume=true TEST_PMEM_REGISTRY=intel
make start && echo && test/setup-deployment.sh

Ngemuva kokuthi konke kusebenze, okukhiphayo kuzoqukatha imiyalo yokusebenzisa:

The test cluster is ready. Log in with [...]/pmem-csi/_work/pmem-govm/ssh.0, run
kubectl once logged in.  Alternatively, use kubectl directly with the
following env variable:
   KUBECONFIG=[...]/pmem-csi/_work/pmem-govm/kube.config

secret/pmem-csi-registry-secrets created
secret/pmem-csi-node-secrets created
serviceaccount/pmem-csi-controller created
...
To try out the pmem-csi driver ephemeral volumes:
   cat deploy/kubernetes-1.19/pmem-app-ephemeral.yaml |
   [...]/pmem-csi/_work/pmem-govm/ssh.0 kubectl create -f -

CSIStorageCapacity izinto azenzelwe ukufundwa abantu, ngakho okunye ukucubungula kuyadingeka. Izihlungi zesifanekiso se-Golang zizobonisa amakilasi okugcina, lesi sibonelo sizobonisa igama, i-topology kanye nomthamo:

$ kubectl get 
        -o go-template='{{range .items}}{{if eq .storageClassName "pmem-csi-sc-late-binding"}}{{.metadata.name}} {{.nodeTopology.matchLabels}} {{.capacity}}
{{end}}{{end}}' 
        csistoragecapacities
csisc-2js6n map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker2] 30716Mi
csisc-sqdnt map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker1] 30716Mi
csisc-ws4bv map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker3] 30716Mi

Into eyodwa inokuqukethwe okulandelayo:

$ kubectl describe csistoragecapacities/csisc-6cw8j
Name:         csisc-sqdnt
Namespace:    default
Labels:       <none>
Annotations:  <none>
API Version:  storage.k8s.io/v1alpha1
Capacity:     30716Mi
Kind:         CSIStorageCapacity
Metadata:
  Creation Timestamp:  2020-08-11T15:41:03Z
  Generate Name:       csisc-
  Managed Fields:
    ...
  Owner References:
    API Version:     apps/v1
    Controller:      true
    Kind:            StatefulSet
    Name:            pmem-csi-controller
    UID:             590237f9-1eb4-4208-b37b-5f7eab4597d1
  Resource Version:  2994
  Self Link:         /apis/storage.k8s.io/v1alpha1/namespaces/default/csistoragecapacities/csisc-sqdnt
  UID:               da36215b-3b9d-404a-a4c7-3f1c3502ab13
Node Topology:
  Match Labels:
    pmem-csi.intel.com/node:  pmem-csi-pmem-govm-worker1
Storage Class Name:           pmem-csi-sc-late-binding
Events:                       <none>

Ake sizame ukwenza uhlelo lokusebenza lwedemo olunenjongo eyodwa jikelele yevolumu ye-ephemeral. Okuqukethwe kwefayela pmem-app-ephemeral.yaml:

# This example Pod definition demonstrates
# how to use generic ephemeral inline volumes
# with a PMEM-CSI storage class.
kind: Pod
apiVersion: v1
metadata:
  name: my-csi-app-inline-volume
spec:
  containers:
    - name: my-frontend
      image: intel/pmem-csi-driver-test:v0.7.14
      command: [ "sleep", "100000" ]
      volumeMounts:
      - mountPath: "/data"
        name: my-csi-volume
  volumes:
  - name: my-csi-volume
    ephemeral:
      volumeClaimTemplate:
        spec:
          accessModes:
          - ReadWriteOnce
          resources:
            requests:
              storage: 4Gi
          storageClassName: pmem-csi-sc-late-binding

Ngemva kokudala, njengoba kukhonjisiwe emiyalweni engenhla, manje sine-pod eyengeziwe ne-PVC:

$ kubectl get pods/my-csi-app-inline-volume -o wide
NAME                       READY   STATUS    RESTARTS   AGE     IP          NODE                         NOMINATED NODE   READINESS GATES
my-csi-app-inline-volume   1/1     Running   0          6m58s   10.36.0.2   pmem-csi-pmem-govm-worker1   <none>           <none>
$ kubectl get pvc/my-csi-app-inline-volume-my-csi-volume
NAME                                     STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS               AGE
my-csi-app-inline-volume-my-csi-volume   Bound    pvc-c11eb7ab-a4fa-46fe-b515-b366be908823   4Gi        RWO            pmem-csi-sc-late-binding   9m21s

Π’Π»Π°Π΄Π΅Π»Π΅Ρ† PVC β€” ΠΏΠΎΠ΄:

$ kubectl get -o yaml pvc/my-csi-app-inline-volume-my-csi-volume
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  annotations:
    pv.kubernetes.io/bind-completed: "yes"
    pv.kubernetes.io/bound-by-controller: "yes"
    volume.beta.kubernetes.io/storage-provisioner: pmem-csi.intel.com
    volume.kubernetes.io/selected-node: pmem-csi-pmem-govm-worker1
  creationTimestamp: "2020-08-11T15:44:57Z"
  finalizers:
  - kubernetes.io/pvc-protection
  managedFields:
    ...
  name: my-csi-app-inline-volume-my-csi-volume
  namespace: default
  ownerReferences:
  - apiVersion: v1
    blockOwnerDeletion: true
    controller: true
    kind: Pod
    name: my-csi-app-inline-volume
    uid: 75c925bf-ca8e-441a-ac67-f190b7a2265f
...

Ulwazi olubuyekeziwe olulindelwe pmem-csi-pmem-govm-worker1:

csisc-2js6n map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker2] 30716Mi
csisc-sqdnt map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker1] 26620Mi
csisc-ws4bv map[pmem-csi.intel.com/node:pmem-csi-pmem-govm-worker3] 30716Mi

Uma olunye uhlelo lokusebenza ludinga okungaphezu kuka-26620Mi, umhleli ngeke anake pmem-csi-pmem-govm-worker1 noma kunjalo.

Yini okulandelayo?

Zombili izici zisathuthukiswa. Izinhlelo zokusebenza ezimbalwa zavulwa phakathi nokuhlolwa kwe-alpha. Isixhumanisi sesiphakamiso sokuthuthukisa sibhala umsebenzi okumele wenziwe ukuze kudlulelwe esigabeni se-beta, kanye nokuthi iziphi ezinye izindlela esezicatshangelwe futhi zanqatshwa:

Source: www.habr.com

Engeza amazwana