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
Ephemeral
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
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
Ukufikelela kokufunda kuphela kwimithamo yedatha
Ukwabiwa komthamo kunokukhokelela ekudaleni umthamo opheleleyo xa:
-
ukubuyisela
umfanekiso wevolumu ; -
indalo
iikopi zevolumu ; -
ΡΠ°Π±ΠΎΡΠ΅
data placeholders .
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 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 -
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
Umzekelo:
Yahlula
Kumatshini ofanelekileyo (Linux, umsebenzisi oqhelekileyo unokusebenzisa
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