I-Ephemeral Volumes kunye ne-StoreCapacity Tracking: i-EmptyDir kwi-Steroids

I-Ephemeral Volumes kunye ne-StoreCapacity Tracking: i-EmptyDir kwi-Steroids

Ezinye izicelo zikwafuna ukugcina idatha, kodwa zikhululekile ngenyaniso yokuba idatha ayiyi kugcinwa emva kokuqalisa kwakhona.

Umzekelo, iinkonzo ze-caching zikhawulelwe yi-RAM, kodwa zinokuhambisa idatha engafane isetyenziselwe ukugcinwa okucothayo kune-RAM, enempembelelo encinci ekusebenzeni ngokubanzi. Ezinye izicelo kufuneka ziqaphele ukuba kunokubakho igalelo lokufunda kuphela kwiifayile, ezinje ngoseto okanye izitshixo ezifihlakeleyo.

I-Kubernetes sele ineentlobo ezininzi imiqulu ye-ephemeral, kodwa ukusebenza kwazo kulinganiselwe kwizinto eziphunyeziweyo kwii-K8s.

Ephemeral Imiqulu yeCSI kuvunyelwe i-Kubernetes ukuba yandiswe kunye nabaqhubi be-CSI ukubonelela ngenkxaso kwiivolumu zasekhaya ezikhaphukhaphu. Ngaloo ndlela kunokwenzeka ukusebenzisa izakhiwo ezingafanelekanga: useto, iimfihlo, idatha yokuchongwa, iinguqu, njalo njalo. Abaqhubi be-CSI kufuneka baguqulwe ukuze baxhase lo mboniso we-Kubernetes, ekubeni kucingelwa ukuba abaqhubi abaqhelekileyo abasemgangathweni abayi kusebenza - kodwa kucingelwa ukuba imiqulu enjalo ingasetyenziswa kuyo nayiphi na i-node ekhethiweyo kwi-pod.

Oku kunokuba yingxaki kwimiqulu edla izixhobo ezibalulekileyo zokusingatha okanye ukugcinwa okufumaneka kuphela kwiinginginya ezithile. Yiyo loo nto iKubernetes 1.19 izisa izinto ezimbini ezintsha zovavanyo lwealpha ezithi zifana ngokweevolume ze-EmptyDir:

  • injongo jikelele imiqulu ephemeral;

  • CSI umthamo wokugcina umkhondo.

Iingenelo zendlela entsha:

  • ugcino lunokuba lwendawo okanye luqhagamshelwe ngenethiwekhi;

  • imiqulu ingaba nobungakanani obuchaziweyo obungenako ukugqithwa ngesicelo;

  • isebenza nabo nabaphi na abaqhubi beCSI abaxhasa unikezelo lwemithamo eqhubekayo kunye (ukuxhasa ukulandelwa komthamo) kuphumeze umnxeba. GetCapacity;

  • Imiqulu inokuba nedatha yokuqala ngokuxhomekeke kumqhubi kunye nezicwangciso;

  • yonke imisebenzi esemgangathweni kunye nomthamo (ukwenza i-snapshot, uhlengahlengiso, njl.) zixhaswa;

  • imiqulu ingasetyenziswa kunye nasiphi na isilawuli sesicelo esamkela imodyuli okanye iinkcukacha zevolumu;

  • Umcwangcisi we-Kubernetes ukhetha iindawo ezifanelekileyo zodwa, ngoko akusekho mfuneko yokubonelela kunye nokuqwalasela izandiso zomcwangcisi okanye ukuguqula ii-webhooks.

Iinketho zesicelo

Ke ngoko, imiqulu yenjongo eqhelekileyo ye-ephemeral ifanelekile kwezi meko zilandelayo zokusetyenziswa:

Imemori eqhubekayo njengokutshintsha kwe-RAM ye-memcached

Ukukhutshwa kwamva nje kwe-memcached inkxaso eyongeziweyo usebenzisa imemori eqhubekayo (Intel Optane, njl., malunga. umguquleli) endaweni ye-RAM eqhelekileyo. Xa usebenzisa i-memcached ngomlawuli wesicelo, ungasebenzisa injongo ngokubanzi umthamo we-ephemeral ukucela ukuba umthamo wobungakanani obunikiweyo unikezelwe kwi-PMEM usebenzisa umqhubi we-CSI, umzekelo. PMEM-CSI.

Indawo yokugcina ye-LVM njengendawo yokusebenza

Usetyenziso olusebenza ngedatha enkulu kune-RAM inokufuna ukugcinwa kwendawo kunye nobungakanani okanye iimetriki zokusebenza ezingenako ukubonelela nge-EmptyDir rhoqo kwi-Kubernetes. Ngokomzekelo, kwabhalwa ngenxa yale njongo I-TopoLVM.

Ukufikelela kokufunda kuphela kwimithamo yedatha

Ukwabiwa komthamo kunokukhokelela ekudaleni umthamo opheleleyo xa:

Le miqulu inokufakwa kwindlela yokufunda kuphela.

ntoni lo msebenzi

Injongo ngokubanzi imiqulu ephemeral

Olona phawu luphambili lwenjongo jikelele ye-ephemeral volumes ngumthombo omtsha womthamo, EphemeralVolumeSource, equlethe yonke imimandla yokwenza isicelo sevolumu (eyayibizwa ngokuba yisicelo sevolumu eqhubekayo, i-PVC). Umlawuli omtsha ngaphakathi kube-controller-manager ijonga iipods ezenza umthombo onjalo wevolumu, kwaye emva koko wenze i-PVC yezo pod. Kumqhubi we-CSI, esi sicelo sibukeka ngokufanayo nezinye, ngoko akukho nkxaso ekhethekileyo ifunekayo apha.

Logama nje ezo PVC zikhona, zinokusetyenziswa njengazo naziphi na ezinye izicelo kumthamo. Ngokukodwa, banokubhekiswa njengomthombo wedatha xa ukopisha umthamo okanye udala i-snapshot evela kumthamo. Into yePVC nayo iqulethe imeko yangoku yomthamo.

Amagama ee-PVC ezenziwe ngokuzenzekelayo achazwe kwangaphambili: ziyindibaniselwano yegama le-pod kunye negama levolumu, ehlulwe yi-hyphen. Amagama achaziweyo enza kube lula ukusebenzisana nePVC kuba akufuneki uyijonge ukuba uyalazi igama le-pod kunye negama levolumu. I-downside kukuba igama lisenokuba sele lisetyenziswa, elifunyenwe nguKubernetes kwaye ngenxa yoko i-pod ivaliwe ukuqala.

Ukuqinisekisa ukuba umthamo uyacinywa kunye ne-pod, umlawuli wenza isicelo kwivolumu phantsi komnini. Xa i-pod isusiwe, indlela yokuqokelela inkunkuma eqhelekileyo iyasebenza, ecima zombini isicelo kunye nomthamo.

Izicelo zihambelana nomqhubi wokugcina ngokusebenzisa indlela eqhelekileyo yeklasi yokugcina. Nangona iiklasi ezinokubophelela kwangoko nangemva kwexesha (aka WaitForFirstConsumer) ziyaxhaswa, kwimiqulu ye-ephemeral kunengqiqo ukuyisebenzisa WaitForFirstConsumer, ngoko umcwangcisi unokuthathela ingqalelo zombini usetyenziso lwenodi kunye nokufumaneka kogcino xa ukhetha indawo. Inqaku elitsha livela apha.

UkuLandelwa koMmandla wokuGcina

Ngokuqhelekileyo umcwangcisi akanalo ulwazi lokuba umqhubi we-CSI uya kudala umthamo. Kwakhona akukho ndlela yokuba umcwangcisi aqhagamshelane nomqhubi ngokuthe ngqo ukuze acele olu lwazi. Ke ngoko, umcwangcisi wee-polls nodes de ifumane enye apho imiqulu inokufikelelwa khona (ukubopha kade) okanye ishiye ukhetho lwendawo ngokupheleleyo kumqhubi (ukubopha kwangoko).

Elitsha API CSIStorageCapacity, ekwinqanaba le-alpha, ivumela idatha eyimfuneko ukuba igcinwe kwi- etcd ukuze ifumaneke kumcwangcisi. Ngokungafaniyo nenkxaso yenjongo jikelele ye-ephemeral volumes, xa uhambisa umqhubi, kufuneka uvule ukulandelwa komthamo wokugcina: external-provisioner kufuneka ipapashe ulwazi lomthamo olufunyenwe kumqhubi ngendlela eqhelekileyo GetCapacity.

Ukuba umcwangcisi ufuna ukukhetha indawo yepod enevolumu engabotshwanga esebenzisa ukubopha kade, kwaye umqhubi wenze oluphawu ngexesha lobeko ngokucwangcisa iflegi. CSIDriver.storageCapacity, emva koko ii-nodes ezingenayo indawo yokugcina ngokwaneleyo ziya kulahla ngokuzenzekelayo. Oku kusebenza kuzo zombini iinjongo eziqhelekileyo ze-ephemeral kunye nemithamo eqhubekayo, kodwa kungekhona kwi-CSI i-ephemeral volumes kuba iiparamitha zabo azikwazi ukufundwa yi-Kubernetes.

Njengesiqhelo, imiqulu edityaniswe ngokukhawuleza yenziwa ngaphambi kokuba iipods zicwangciswe, kwaye ukubekwa kwazo kukhethwe ngumqhubi wokugcina, ngoko xa uqwalasela. external-provisioner Ngokungagqibekanga, iiklasi zokugcina ezinokubophelela kwangoko ziyatsitywa, kuba le datha ayisayi kusetyenziswa nakanjani na.

Ekubeni umcwangcisi we-kubernetes unyanzelekile ukuba asebenze ngolwazi olunokuthi lube luphelelwe yisikhathi, akukho siqinisekiso sokuba umthamo uya kufumaneka kuzo zonke iimeko xa umthamo wenziwa, kodwa amathuba okuba iya kudalwa ngaphandle kokuzama kwakhona ayanda.

NB Unokufumana ulwazi oluthe kratya, kunye "nokuziqhelanisa ngokukhuselekileyo kwi-stand yekati", kwaye kwimeko engaqondakaliyo, fumana uncedo lwenkxaso yezobuchwepheshe kwiikhosi ezinzulu - Kubernetes Base iya kubanjwa ngoSeptemba 28-30, kunye neengcali eziphambili Kubernetes Mega Oktobha 14–16.

Khu seleko

CSIStorageCapacity

Izinto ze-CSISstorageCapacity zihlala kwiindawo zamagama; xa ukhupha umqhubi ngamnye we-CSI kwindawo yakhe yamagama, kuyacetyiswa ukuba uthintele amalungelo e-RBAC kwi-CSIStorageCapacity kweso sithuba kuba kucacile apho idatha ivela khona. I-Kubernetes ayikhangeli oku, kwaye ngokwesiqhelo abaqhubi bafakwa kwindawo yegama elifanayo, ke ekugqibeleni abaqhubi kulindeleke ukuba basebenze kwaye bangapapashi idatha engalunganga (kwaye kulapho ikhadi lam lisilele khona, malunga. umguquleli esekelwe isiqhulo iindevu)

Injongo ngokubanzi imiqulu ephemeral

Ukuba abasebenzisi banamalungelo okudala i-pod (ngokuthe ngqo okanye ngokungathanga ngqo), baya kuba nako ukwenza iinjongo eziqhelekileyo ze-ephemeral volumes nokuba abanamalungelo okudala isicelo kumthamo. Oku kungenxa yokuba ukuhlolwa kwemvume ye-RBAC kusetyenziswe kumlawuli owenza i-PVC, kungekhona kumsebenzisi. Olu lolona tshintsho luphambili lokongeza kwiakhawunti yakho, phambi kokuvumela eli nqaku kumaqela apho abasebenzisi abangathembekanga kufuneka bangabi namalungelo okwenza imiqulu.

Umzekelo:

Yahlula isebe I-PMEM-CSI iqulethe zonke iinguqu ezifunekayo ukuqhuba i-Kubernetes 1.19 iqoqo ngaphakathi koomatshini benyani be-QEMU abanazo zonke iimpawu kwinqanaba le-alpha. Ikhowudi yomqhubi ayizange itshintshe, kuphela ukuthunyelwa kutshintshile.

Kumatshini ofanelekileyo (Linux, umsebenzisi oqhelekileyo unokusebenzisa Docker, khangela apha iinkcukacha) le miyalelo izakuzisa iqela kwaye ifake umqhubi 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

Emva kokuba yonke into isebenze, imveliso iya kuba nemiyalelo yokusetyenziswa:

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 azenzelwanga ukuba zifundwe ngabantu, ngoko ke ukusetyenzwa kuyafuneka. Izihluzi zetemplate zeGolang ziya kubonisa iiklasi zokugcina, lo mzekelo uya kubonisa igama, i-topology kunye 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 enye inomxholo olandelayo:

$ 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>

Masizame ukwenza isicelo sedemo esinenjongo enye jikelele yevolumu ye-ephemeral. Imixholo yefayile 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

Emva kokudala, njengoko kubonisiwe kwimiyalelo engentla, ngoku sinepod eyongezelelweyo kunye nePVC:

$ 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

Umnini wePVC - ngaphantsi:

$ 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 oluhlaziyiweyo olulindelekileyo lwe 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

Ukuba esinye isicelo sidinga ngaphezulu kwe-26620Mi, umcwangcisi akayi kuthatha ngqalelo pmem-csi-pmem-govm-worker1 nangeyiphi ndlela.

Yintoni elandelayo?

Zombini iimpawu zisaphuhliswa. Izicelo ezininzi zavulwa ngexesha lovavanyo lwealpha. Isindululo sophuculo siqhagamshelanisa uxwebhu lomsebenzi ekufuneka wenziwe ukuya kwinqanaba le-beta, kunye nokuba zeziphi ezinye iindlela esele ziqwalaselwe zaza zakhatywa:

umthombo: www.habr.com

Yongeza izimvo