Li-Volumes tsa Ephemeral tse nang le Ts'ebetso ea Bokhoni ba ho Boloka: EmptyDir ho Steroids

Li-Volumes tsa Ephemeral tse nang le Ts'ebetso ea Bokhoni ba ho Boloka: EmptyDir ho Steroids

Lisebelisoa tse ling le tsona li hloka ho boloka data, empa li phutholohile ka taba ea hore data e ke ke ea bolokoa kamora ho qala bocha.

Mohlala, lits'ebeletso tsa caching li lekanyelitsoe ke RAM, empa hape li ka tsamaisa data e sa sebelisoeng hangata ho boloka e liehang ho feta RAM, e nang le tšusumetso e nyane ts'ebetsong ka kakaretso. Lisebelisoa tse ling li hloka ho elelloa hore ho ka ba le ho kenya feela lifaeleng, joalo ka li-setting kapa linotlolo tsa lekunutu.

Kubernetes e se e na le mefuta e mengata meqolo ea ephemeral, empa tshebetso ya tsona e lekanyeditswe ho tse kenngwa tshebetsong ho K8s.

Ephemeral Litefiso tsa CSI e lumelletse Kubernetes hore e atolosoe le bakhanni ba CSI ho fana ka tšehetso bakeng sa meqolo e bobebe ea lehae. Ka tsela ena e ka sebelisoa meaho e se nang mabaka: litlhophiso, liphiri, lintlha tsa boitsebiso, mefuta-futa, joalo-joalo. Bakhanni ba CSI ba tlameha ho fetoloa ho tšehetsa tšobotsi ena ea Kubernetes, kaha ho nahanoa hore bakhanni ba tloaelehileng ba tloaelehileng ba ke ke ba sebetsa - empa ho nahanoa hore mefuta e joalo e ka sebelisoa ho node leha e le efe e khethiloeng bakeng sa pod.

Sena e ka 'na ea e-ba bothata bakeng sa li-volumes tse jang lisebelisoa tsa bohlokoa tsa baeti kapa bakeng sa polokelo e fumanehang feela ho batho ba bang. Ke ka lebaka leo Kubernetes 1.19 e hlahisang likarolo tse peli tse ncha tsa tlhahlobo ea alpha tse ts'oanang le meqolo ea EmptyDir:

  • sepheo se akaretsang meqolo ea ephemeral;

  • Tlhokomelo ea bokhoni ba polokelo ea CSI.

Melemo ea mokhoa o mocha:

  • polokelo e ka ba ea lehae kapa ea hokahanngoa ka marang-rang;

  • meqolo e ka ba le boholo bo boletsoeng bo ke keng ba fetisoa ke kopo;

  • e sebetsa le bakhanni leha e le bafe ba CSI ba tšehetsang phano ea melumo e tsitsitseng le (ho tšehetsa ho lateloa ha bokhoni) ho kenya tšebetsong mohala. GetCapacity;

  • meqolo e kanna ea ba le data ea pele ho latela mokhanni le litlhophiso;

  • lits'ebetso tsohle tse tloaelehileng tse nang le molumo (ho etsa setšoantšo, ho fetola boholo, joalo-joalo) lia tšehetsoa;

  • meqolo e ka sebelisoa le molaoli ofe kapa ofe oa kopo o amohelang mojule kapa litlhaloso tsa molumo;

  • Sehlophisi sa Kubernetes se ikhethela li-node tse loketseng ka botsona, ka hona ha ho sa na tlhoko ea ho fana le ho hlophisa likeketso tsa kemiso kapa ho fetola li-webhooks.

Likhetho tsa kopo

Ka hona, li-ephemeral volume volumes li loketse linyeoe tse latelang tsa tšebeliso:

Memori e tsitsitseng e le sebaka sa RAM bakeng sa memcached

Litokollo tsa morao-rao tsa memcached tlatsetso ya tshehetso ho sebelisa mohopolo o tsitsitseng (Intel Optane, joalo-joalo, hoo e ka bang. mofetoleli) sebakeng sa RAM e tloaelehileng. Ha o tsamaisa memcached ka molaoli oa ts'ebeliso, o ka sebelisa li-volumes tsa ephemeral tsa sepheo se akaretsang ho kopa hore boholo bo fanoeng bo abeloe ho tsoa ho PMEM ho sebelisoa mokhanni oa CSI, mohlala. PMEM-CSI.

LVM polokelo ea lehae e le sebaka sa ho sebetsa

Lisebelisoa tse sebetsang ka data e kholo ho feta RAM li ka hloka polokelo ea lehae e nang le boholo kapa metrics ea ts'ebetso eo melumo e tloaelehileng ea EmptyDir e tsoang ho Kubernetes e ke keng ea fana ka eona. Ka mohlala, ka morero ona ho ne ho ngotsoe TopoLVM.

Ho fihlella ho bala feela bakeng sa meqolo ea data

Kabo ea molumo e ka etsa hore ho thehoe molumo o felletseng ha:

Meqolo ena e ka kenngoa ka mokhoa oa ho bala feela.

Joang mosebetsing ona

Kakaretso ea Ephemeral Volumes

Karolo e ka sehloohong ea sepheo se akaretsang sa li-ephemeral volumes ke mohloli o mocha oa molumo, EphemeralVolumeSource, e nang le likarolo tsohle tsa ho etsa kopo ea molumo (eo pele e neng e bitsoa kopo ea molumo o tsitsitseng, PVC). Mookameli e mocha ka kube-controller-manager e sheba li-pods tse hlahisang mohloli o joalo oa molumo, ebe o etsa PVC bakeng sa li-pods tseo. Bakeng sa mokhanni oa CSI, kopo ena e shebahala e tšoana le tse ling, kahoo ha ho na tšehetso e khethehileng e hlokahalang mona.

Ha feela li-PVC tse joalo li ntse li le teng, li ka sebelisoa joalo ka likopo tse ling tsa molumo. Haholo-holo, li ka hlalosoa e le mohloli oa data ha u kopitsa molumo kapa u etsa setšoantšo se tsoang ho molumo. Ntho ea PVC e boetse e na le boemo ba hona joale ba molumo.

Mabitso a li-PVC tse entsoeng ka boits'oaro a hlalositsoe esale pele: ke motsoako oa lebitso la pod le lebitso la molumo, a arohanngoa ke hyphen. Mabitso a boletsoeng esale pele a etsa hore ho be bonolo ho sebelisana le PVC hobane ha ho hlokahale hore u e batle haeba u tseba lebitso la pod le lebitso la molumo. Taba e nyahamisang ke hore e kanna eaba lebitso le se le ntse le sebelisoa, le bonoang ke Kubernetes mme ka lebaka leo pod e thibetsoe ho qala.

Ho etsa bonnete ba hore molumo o tlosoa hammoho le pod, molaoli o etsa kopo ho molumo tlas'a mong'a lona. Ha pod e hlakotsoe, mokhoa o tloaelehileng oa ho bokella litšila o sebetsa, o hlakola kopo le molumo.

Likōpo li tsamaisana le mokhanni oa polokelo ka mochine o tloaelehileng oa sehlopha sa polokelo. Leha litlelase li na le tlamo ea hang-hang le ea morao-rao (aka WaitForFirstConsumer) li tšehetsoa, ​​​​bakeng sa meqolo ea ephemeral hoa utloahala ho sebelisoa WaitForFirstConsumer, joale mohlophisi a ka nahana ka tšebeliso ea li-node le ho fumaneha ha polokelo ha a khetha node. Karolo e ncha e hlaha mona.

Pokello ea Bokhoni ba polokelo

Ka tloaelo mohlophisi ha a tsebe hore na mokhanni oa CSI o tla etsa molumo hokae. Hape ha ho na mokhoa oa hore mohlophisi a iteanye le mokhanni ka kotloloho ho kopa tlhahisoleseling ena. Ka hona, li-node tsa mohlophisi oa likhetho ho fihlela a fumana e 'ngoe eo ho eona ho ka fihleloang meqolo (e tlamang ka morao ho nako) kapa e siea khetho ea sebaka ka ho feletseng ho mokhanni (ho tlama hang-hang).

E ncha API CSIStorageCapacity, e leng sethaleng sa alpha, e lumella data e hlokahalang hore e bolokoe ho joalo-joalo e le hore e fumanehe ho mohlophisi. Ho fapana le ts'ehetso ea merero e akaretsang ea ephemeral, ha o tsamaisa mokhanni, o tlameha ho etsa hore ho latele bokhoni ba polokelo: external-provisioner e lokela ho phatlalatsa tlhahisoleseding ya bokgoni e fumanweng ho tswa ho mokganni ka tsela e tlwaelehileng GetCapacity.

Haeba mohlophisi a hloka ho khetha node bakeng sa pod e nang le molumo o sa tlamisoeng o sebelisang ho tlama ha morao, 'me mokhanni o nolofalitse tšobotsi ena nakong ea ho tsamaisoa ka ho beha folakha. CSIDriver.storageCapacity, joale li-node tse se nang matla a lekaneng a ho boloka li tla lahloa ka bohona. Sena se sebetsa molemong oa kakaretso oa li-ephemeral le tse phehellang, empa eseng bakeng sa li-volumes tsa CSI ephemeral hobane li-parameter tsa tsona li ke ke tsa baloa ke Kubernetes.

Joalo ka tloaelo, li-volumes tse hokahantsoeng hang-hang li bōptjoa pele li-pods li reriloe, 'me ho beoa ha tsona ho khethoa ke mokhanni oa polokelo, kahoo ha ho etsoa litokisetso. external-provisioner Ka mokhoa o ts'oanelang, litlelase tsa polokelo tse tlamang hanghang lia tloloa, kaha data ena e ke ke ea sebelisoa.

Kaha mohlophisi oa kubernetes o qobelloa ho sebetsa ka boitsebiso bo ka 'nang ba e-ba teng, ha ho na tiiso ea hore bokhoni bo tla ba teng maemong ohle ha molumo o bōptjoa, empa menyetla ea hore e tla bōptjoa ntle le ho leka hape e ntse e eketseha.

NB U ka fumana lintlha tse qaqileng haholoanyane, hammoho le ho "itloaetsa holima likatse" ka mokhoa o sireletsehileng, 'me haeba boemo bo sa utloisisoe ka ho feletseng, fumana thuso e tšoanelehang ea tšehetso ea tekheniki lithutong tse matla - Kubernetes Base e tla tšoaroa ka la 28-30 Loetse, le bakeng sa litsebi tse tsoetseng pele Kubernetes Mega October 14-16.

Tshireletso

CSIstorageCapacity

Lintho tsa CSIStorageCapacity li lula libakeng tsa mabitso; ha o tsamaisa mokhanni e mong le e mong oa CSI sebakeng sa hae sa mabitso, ho khothaletsoa ho thibela litokelo tsa RBAC ho CIStorageCapacity sebakeng seo kaha ho hlakile hore na data e tsoa hokae. Kubernetes ha e hlahlobe sena, 'me hangata bakhanni ba beoa sebakeng se le seng sa mabitso, kahoo qetellong bakhanni ba lebelletsoe ho sebetsa le ho se phatlalatse data e fosahetseng (mme ke moo karete ea ka e hlolehileng, hoo e ka bang. mofetoleli e thehiloeng motlae oa litelu)

Kakaretso ea Ephemeral Volumes

Haeba basebelisi ba na le litokelo tsa ho etsa pod (ka ho toba kapa ka tsela e sa tobang), ba tla boela ba khone ho etsa merero e akaretsang ea ephemeral esita le haeba ba se na litokelo tsa ho etsa kopo ka molumo. Lebaka ke hobane licheke tsa tumello ea RBAC li sebelisoa ho molaoli ea etsang PVC, eseng mosebelisi. Ena ke phetoho e kholo ea ho eketsa akhaonteng ya hao, pele o nolofalletsa tšobotsi ena ho lihlopha moo basebelisi ba sa tšepahaleng ba sa lokelang ho ba le litokelo tsa ho etsa meqolo.

Mohlala:

Arohane lekala PMEM-CSI e na le liphetoho tsohle tse hlokahalang ho tsamaisa sehlopha sa Kubernetes 1.19 ka har'a mechini ea sebele ea QEMU e nang le likarolo tsohle tse sethaleng sa alpha. Khoutu ea mokhanni ha e so fetohe, ho romelloa feela ho fetohile.

Mochineng o loketseng (Linux, mosebelisi ea tloaelehileng a ka o sebelisa Docker, sheba mona lintlha) litaelo tsena li tla hlahisa sehlopha le ho kenya mokhanni oa 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

Ka mor'a hore ntho e 'ngoe le e' ngoe e sebetse, tlhahiso e tla ba le litaelo tsa tšebeliso:

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 lintho ha lia rereloa ho baloa ke batho, kahoo ts'ebetso e itseng ea hlokahala. Li-filters tsa template tsa Golang li tla bontša lihlopha tsa polokelo, mohlala ona o tla bontša lebitso, topology le bokhoni:

$ 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

Ntho e le 'ngoe e na le litaba tse latelang:

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

Ha re leke ho theha sesebelisoa sa demo se nang le sepheo se le seng se akaretsang sa molumo oa ephemeral. Litaba tsa faele 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

Kamora ho bopa, joalo ka ha ho bonts'itsoe litaelong tse kaholimo, joale re na le pod le PVC e eketsehileng:

$ 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

Mong'a PVC - tlasa:

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

Lintlha tse nchafalitsoeng tse lebelletsoeng bakeng sa 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

Haeba sesebelisoa se seng se hloka ho feta 26620Mi, mohlophisi a ke ke a e ela hloko pmem-csi-pmem-govm-worker1 boemong ba ka.

Ke'ng e latelang?

Likarolo tseo ka bobeli li ntse li ntlafatsoa. Lisebelisoa tse 'maloa li ile tsa buloa nakong ea tlhahlobo ea alpha. Tlhahiso ea ntlafatso e hokahanya tokomane ea mosebetsi o lokelang ho etsoa ho ea sethaleng sa beta, hammoho le hore na ke mekhoa efe e meng e seng e nahanoe le ho hanoa:

Source: www.habr.com

Eketsa ka tlhaloso