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
I-Ephemeral
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
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
Ukufinyelela kokufunda kuphela kwamavolumu edatha
Ukwabiwa kwevolumu kungaholela ekudalweni kwevolumu egcwele lapho:
-
ukululama
isifinyezo sevolumu ; -
indalo
amakhophi evolumu ; -
sebenzisa
izimeli zedatha .
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 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 -
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
Isibonelo:
Hlukanisa
Emshinini ofanelekile (i-Linux, umsebenzisi ojwayelekile angasebenzisa
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