Volumi effimeri b'Traċċar tal-Kapaċità tal-Ħażna: EmptyDir fuq Sterojdi
Xi applikazzjonijiet jeħtieġu wkoll li jaħżnu d-dejta, iżda huma pjuttost komdi bil-fatt li d-dejta mhux se tiġi ssejvjata wara bidu mill-ġdid.
Pereżempju, is-servizzi tal-caching huma limitati mir-RAM, iżda jistgħu wkoll iċċaqilqu data li rarament tintuża għal ħażna li hija aktar bil-mod mir-RAM, bi ftit impatt fuq il-prestazzjoni ġenerali. Applikazzjonijiet oħra jeħtieġ li jkunu konxji li jista 'jkun hemm xi input li jinqara biss fil-fajls, bħal settings jew ċwievet sigrieti.
Kubernetes diġà għandu diversi tipi volumi effimeri, iżda l-funzjonalità tagħhom hija limitata għal dak li huwa implimentat fil-K8s.
Effimeru volumi CSI ippermetta li Kubernetes jiġi estiż b'sewwieqa CSI biex jipprovdi appoġġ għal volumi lokali ħfief. B'dan il-mod huwa possibbli li tuża strutturi arbitrarji: settings, sigrieti, data ta 'identifikazzjoni, varjabbli, eċċ. Is-sewwieqa CSI għandhom jiġu modifikati biex jappoġġjaw din il-karatteristika Kubernetes, peress li huwa preżunt li s-sewwieqa standardizzati regolari mhux se jaħdmu - iżda huwa preżunt li volumi bħal dawn jistgħu jintużaw fuq kwalunkwe node magħżul għall-pod.
Din tista' tkun problema għal volumi li jikkunsmaw riżorsi sinifikanti tal-hosts jew għall-ħażna li hija disponibbli biss fuq xi hosts. Huwa għalhekk li Kubernetes 1.19 jintroduċi żewġ karatteristiċi ġodda tal-volum tal-ittestjar alfa li huma kunċettwalment simili għall-volumi EmptyDir:
volumi effimeri għal skopijiet ġenerali;
Traċċar tal-kapaċità tal-ħażna CSI.
Vantaġġi tal-approċċ il-ġdid:
il-ħażna tista 'tkun lokali jew konnessa permezz ta' netwerk;
il-volumi jista' jkollhom daqs speċifikat li ma jistax jinqabeż mill-applikazzjoni;
jaħdem ma 'kwalunkwe sewwieqa CSI li jappoġġaw il-forniment ta' volumi persistenti u (biex jappoġġaw it-traċċar tal-kapaċità) jimplimentaw is-sejħa GetCapacity;
il-volumi jista' jkollhom xi data inizjali skont is-sewwieq u s-settings;
l-operazzjonijiet standard kollha b'volum (ħolqien ta 'snapshot, ridimensjonar, eċċ.) huma appoġġjati;
volumi jistgħu jintużaw ma 'kwalunkwe kontrollur ta' applikazzjoni li jaċċetta speċifikazzjoni ta 'modulu jew volum;
L-iskeder ta 'Kubernetes jagħżel nodi xierqa waħdu, u għalhekk m'għadx hemm bżonn li jiġu pprovduti u kkonfigurati estensjonijiet ta' l-iskedar jew jimmodifikaw il-webhooks.
Għażliet ta 'applikazzjoni
Għalhekk, volumi effimeri għal skopijiet ġenerali huma adattati għall-każijiet ta 'użu li ġejjin:
Memorja persistenti bħala sostitut għal RAM għal memcached
L-aħħar ħarġiet ta' memcached appoġġ miżjud billi tuża memorja persistenti (Intel Optane, eċċ., madwar. traduttur) minflok RAM regolari. Meta tuża memcached permezz ta' kontrollur ta' applikazzjoni, tista' tuża volumi effimeri għal skopijiet ġenerali biex titlob li jiġi allokat volum ta' daqs partikolari minn PMEM billi tuża s-sewwieq CSI, pereżempju PMEM-CSI.
Ħażna lokali LVM bħala spazju tax-xogħol
Applikazzjonijiet li jaħdmu b'dejta li hija akbar mir-RAM jistgħu jeħtieġu ħażna lokali b'daqs jew metriċi ta' prestazzjoni li volumi regolari ta' EmptyDir minn Kubernetes ma jistgħux jipprovdu. Pereżempju, għal dan il-għan inkiteb TopoLVM.
Aċċess għall-qari biss għall-volumi tad-dejta
L-allokazzjoni ta' volum tista' tirriżulta fil-ħolqien ta' volum sħiħ meta:
Dawn il-volumi jistgħu jiġu mmuntati fil-modalità ta 'qari biss.
Kif taħdem din
Volumi Effimeri Għan Ġenerali
Karatteristika ewlenija tal-volumi effimeri għal skopijiet ġenerali hija s-sors il-ġdid tal-volum, EphemeralVolumeSource, li fih l-oqsma kollha biex tinħoloq talba ta 'volum (storikament imsejħa talba ta' volum persistenti, PVC). Kontrollur ġdid fi kube-controller-manager iħares lejn il-miżwed li joħolqu tali sors ta 'volum, u mbagħad joħloq PVC għal dawk il-miżwed. Għas-sewwieq CSI, din it-talba tidher l-istess bħall-oħrajn, għalhekk l-ebda appoġġ speċjali mhu meħtieġ hawn.
Sakemm jeżistu PVCs bħal dawn, jistgħu jintużaw bħal kull talba oħra fuq il-volum. B'mod partikolari, jistgħu jiġu referenzjati bħala sors tad-dejta meta tikkopja volum jew toħloq snapshot minn volum. L-oġġett tal-PVC fih ukoll l-istat attwali tal-volum.
L-ismijiet ta 'PVCs maħluqa awtomatikament huma predefiniti: huma kombinazzjoni tal-isem tal-pod u l-isem tal-volum, separati b'sing. Ismijiet predefiniti jagħmluha aktar faċli biex jinteraġixxu mal-PVC għaliex m'għandekx għalfejn tfittex jekk taf l-isem tal-pod u l-isem tal-volum. L-iżvantaġġ huwa li l-isem jista 'jkun diġà qed jintuża, li jiġi skopert minn Kubernetes u bħala riżultat il-pod huwa mblukkat milli jibda.
Biex jiġi żgurat li l-volum jitħassar flimkien mal-pod, il-kontrollur jagħmel talba lill-volum taħt is-sid. Meta l-pod titħassar, jaħdem il-mekkaniżmu standard tal-ġbir taż-żibel, li jħassar kemm it-talba kif ukoll il-volum.
It-talbiet huma mqabbla mis-sewwieq tal-ħażna permezz tal-mekkaniżmu normali tal-klassi tal-ħażna. Għalkemm klassijiet b'irbit immedjat u tard (magħruf ukoll bħala WaitForFirstConsumer) huma appoġġjati, għal volumi effimeri jagħmel sens li jintużaw WaitForFirstConsumer, allura l-iskeder jista 'jikkunsidra kemm l-użu tan-node kif ukoll id-disponibbiltà tal-ħażna meta jagħżel node. Karatteristika ġdida tidher hawn.
Traċċar tal-Kapaċità tal-Ħażna
Tipikament l-iskedar ma jkollu l-ebda għarfien dwar fejn is-sewwieq CSI se joħloq il-volum. Lanqas m'hemm l-ebda mod kif l-iskedatur jikkuntattja lis-sewwieq direttament biex jitlob din l-informazzjoni. Għalhekk, l-iskeder jivvota n-nodi sakemm isib wieħed li fih jistgħu jiġu aċċessati l-volumi (legatura tard) jew iħalli l-għażla tal-post għal kollox lis-sewwieq (legatura immedjata).
New APICSIStorageCapacity, li jinsab fl-istadju alfa, jippermetti li d-dejta meħtieġa tinħażen f'etcd sabiex tkun disponibbli għall-iskeduler. B'differenza mill-appoġġ għal volumi effimeri għal skopijiet ġenerali, meta tuża s-sewwieq, trid tippermetti t-traċċar tal-kapaċità tal-ħażna: external-provisioner għandha tippubblika l-informazzjoni dwar il-kapaċità riċevuta mingħand ix-xufier permezz tan-normal GetCapacity.
Jekk l-iskeder jeħtieġ li jagħżel node għal pod b'volum mhux marbut li juża rbit tard, u s-sewwieq ippermetta din il-karatteristika waqt l-iskjerament billi stabbilixxa l-bandiera CSIDriver.storageCapacity, allura nodi li m'għandhomx biżżejjed kapaċità ta 'ħażna se jintremew awtomatikament. Dan jaħdem kemm għal volumi effimeri u persistenti għal skopijiet ġenerali, iżda mhux għal volumi effimeri CSI minħabba li l-parametri tagħhom ma jistgħux jinqraw minn Kubernetes.
Bħas-soltu, il-volumi konnessi immedjatament jinħolqu qabel ma jiġu skedati l-imżiewed, u t-tqegħid tagħhom jintgħażel mis-sewwieq tal-ħażna, għalhekk meta tiġi kkonfigurata external-provisioner B'mod awtomatiku, il-klassijiet tal-ħażna b'irbit immedjat jinqabżu, peress li din id-dejta xorta waħda mhix se tintuża.
Peress li l-kubernetes scheduler huwa sfurzat jaħdem b'informazzjoni potenzjalment skaduta, m'hemm l-ebda garanzija li l-kapaċità tkun disponibbli f'kull każ meta jinħoloq il-volum, iżda ċ-ċansijiet li tinħoloq mingħajr tentattivi mill-ġdid huma madankollu miżjuda.
NB Tista 'tikseb informazzjoni aktar dettaljata, kif ukoll "prattika fuq l-istand tal-qtates" b'mod sikur, u f'każ ta' sitwazzjoni kompletament inkomprensibbli, tirċievi għajnuna ta' appoġġ tekniku kwalifikat f'korsijiet intensivi - Bażi Kubernetes se ssir fit-28-30 ta’ Settembru, u għal speċjalisti aktar avvanzati Kubernetes Mega 14–16 ta’ Ottubru.
sigurtà
CSISstorageCapacity
L-oġġetti CSIStorageCapacity jirrisjedu fl-ispazji tal-isem; meta jitħaddem kull sewwieq CSI fl-ispazju tal-isem tiegħu stess, huwa rakkomandat li jiġu ristretti d-drittijiet RBAC għas-CSIStorageCapacity f'dak l-ispazju peress li huwa ovvju minn fejn tkun ġejja d-dejta. Kubernetes ma jiċċekkjax għal dan xorta waħda, u ġeneralment is-sewwieqa jitpoġġew fl-istess spazju tal-isem, għalhekk fl-aħħar mill-aħħar is-sewwieqa huma mistennija li jaħdmu u ma jippubblikawx data mhux korretta (u dan huwa fejn il-karta tiegħi falliet, madwar. traduttur ibbażat fuq ċajta bid-daqna)
Volumi Effimeri Għan Ġenerali
Jekk l-utenti għandhom drittijiet biex joħolqu pod (direttament jew indirettament), ikunu jistgħu wkoll joħolqu volumi effimeri għal skopijiet ġenerali anki jekk ma jkollhomx drittijiet biex joħolqu talba fuq il-volum. Dan għaliex il-kontrolli tal-permessi RBAC huma applikati lill-kontrollur li joħloq il-PVC, mhux lill-utent. Din hija l-bidla ewlenija li għandha żżid għall-kont tiegħek, qabel ma tippermetti din il-karatteristika fuq raggruppamenti fejn utenti mhux fdati m'għandux ikollhom drittijiet biex joħolqu volumi.
Eżempju
Separati twig PMEM-CSI fih il-bidliet kollha meħtieġa biex iħaddem cluster Kubernetes 1.19 ġewwa magni virtwali QEMU bil-karatteristiċi kollha fl-istadju alfa. Il-kodiċi tas-sewwieq ma nbidilx, l-iskjerament biss inbidel.
Fuq magna xierqa (Linux, utent normali jista' juża Docker, ara hawn dettalji) dawn il-kmandi se jġibu l-cluster u jinstallaw is-sewwieq 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
Wara li kollox jaħdem, l-output ikun fih struzzjonijiet għall-użu:
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 -
L-oġġetti CSIStorageCapacity mhumiex maħsuba biex jinqraw mill-bnedmin, għalhekk huwa meħtieġ xi proċessar. Il-filtri tal-mudelli Golang se juru l-klassijiet tal-ħażna, dan l-eżempju se juri l-isem, it-topoloġija u l-kapaċità:
Ejja nippruvaw noħolqu applikazzjoni demo b'volum effimeru wieħed għal skopijiet ġenerali. Kontenut tal-fajl 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
Wara li ħoloq, kif muri fl-istruzzjonijiet ta 'hawn fuq, issa għandna pod u PVC addizzjonali:
$ 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
Jekk applikazzjoni oħra teħtieġ aktar minn 26620Mi, l-iskedar mhux se jqis pmem-csi-pmem-govm-worker1 fi kwalunkwe każ.
Xi jmiss?
Iż-żewġ karatteristiċi għadhom fl-iżvilupp. Diversi applikazzjonijiet infetħu waqt l-ittestjar alfa. Ir-rabtiet tal-proposta għal titjib jiddokumentaw ix-xogħol li jeħtieġ li jsir biex wieħed jgħaddi għall-istadju beta, kif ukoll liema alternattivi diġà ġew ikkunsidrati u miċħuda: