ProHoster > Blog > Pulega > Ephemeral Volumes with Storage Capacity Tracking: EmptyDir on Steroids
Ephemeral Volumes with Storage Capacity Tracking: EmptyDir on Steroids
O nisi tusi talosaga e manaʻomia foʻi le teuina o faʻamaumauga, ae latou te matua faʻalelei i le mea moni e le mafai ona faʻasaoina faʻamaumauga pe a uma le toe amataina.
Mo se faʻataʻitaʻiga, o auaunaga faʻapipiʻi e faʻatapulaʻaina e le RAM, ae mafai foi ona faʻanofoina faʻamatalaga e seasea faʻaaogaina i le teuina e sili atu lemu nai lo le RAM, e itiiti se aʻafiaga i le faʻatinoga atoa. O isi talosaga e tatau ona nofouta e ono i ai ni mea e na'o le faitau i totonu o faila, e pei o seti poʻo ki faalilolilo.
Kubernetes ua iai ni ituaiga voluma ephemeral, ae o latou galuega e faʻatapulaʻaina i mea o loʻo faʻatinoina i le K8s.
Epemera CSI voluma fa'ataga Kubernetes e fa'alautele ma aveta'avale CSI e tu'uina atu ai le lagolago mo voluma mama mama i le lotoifale. I lenei auala e mafai ona faʻaaogaina fa'atonuga fa'avae: faʻatulagaina, mea lilo, faʻamatalaga faʻamatalaga, fesuiaiga, ma isi. E tatau ona suia ta'avale CSI e lagolago ai lenei fa'aaliga Kubernetes, talu ai e manatu o le a le aoga ta'avale fa'asalalau masani - ae fa'apea e mafai ona fa'aoga ia voluma i so'o se node ua filifilia mo le pod.
Atonu o se fa'afitauli lea mo voluma o lo'o fa'aaogaina ai punaoa fa'apitoa po'o le teuina e na'o nisi 'au e maua. O le mea lea na faʻaalia ai e Kubernetes 1.19 ni faʻataʻitaʻiga fou e lua o suʻega faʻataʻitaʻiga alafaʻatasi e foliga tutusa ma le EmptyDir volumes:
fa'amoemoega lautele voluma ephemeral;
CSI e teu ai le gafatia o le siakiina.
Tulaga lelei o le auala fou:
teuina e mafai ona faʻapitonuʻu pe fesoʻotaʻi e ala i se fesoʻotaiga;
voluma e mafai ona i ai se lapopoa maoti e le mafai ona sili atu i le talosaga;
galue ma soʻo se avetaʻavale CSI e lagolagoina le tuʻuina atu o voluma faifai pea ma (e lagolago le gafatia o le siakiina) faʻatino le valaau GetCapacity;
voluma atonu e iai ni fa'amatalaga muamua e fa'atatau i le aveta'avale ma fa'atulagaga;
o fa'agaioiga masani uma fa'atasi ma se voluma (faia o se ata, fa'afouina, ma isi) e lagolagoina;
e mafai ona fa'aoga voluma ma so'o se fa'atonuga o talosaga e talia se fa'asologa po'o se fa'amatalaga voluma;
O le Kubernetes scheduler e filifilia e ia lava nodes talafeagai, o lea e le toe manaʻomia ai le tuʻuina atu ma faʻapipiʻi faʻaopoopoga faʻasologa poʻo le suia o webhooks.
Talosaga talosaga
O le mea lea, o voluma ephemeral fa'amoemoe lautele e talafeagai mo tulaga fa'aoga nei:
Manatua faifaipea e fai ma sui mo le RAM mo memcached
Fa'amatalaga lata mai o memcached faaopoopo lagolago faʻaaogaina manatuaga faifai pea (Intel Optane, ma isi, tusa. faaliliu) nai lo le RAM masani. A faʻapipiʻi le memcached e ala i se faʻatonuga o talosaga, e mafai ona e faʻaogaina voluma ephemeral faʻamoemoe lautele e talosagaina ai se voluma o se lapoʻa tuʻufaʻatasia e tuʻufaʻatasia mai le PMEM e faʻaaoga ai le avetaavale CSI, mo se faʻataʻitaʻiga PMEM-CSI.
LVM fa'apitonu'u teuina o se avanoa faigaluega
O talosaga e galulue ma fa'amaumauga e lapopoa atu i le RAM e ono mana'omia le teuina i totonu o le lotoifale ma se lapo'a po'o fua fa'atinoga e le mafai ona tu'uina atu e voluma masani EmptyDir mai Kubernetes. Mo se faʻataʻitaʻiga, mo lenei faʻamoemoe na tusia ai TopoLVM.
Avanoa na'o le faitau mo le tele o fa'amaumauga
O le fa'asoaina o se voluma e mafai ona i'u ai i le fausiaina o se voluma atoa pe a:
O nei voluma e mafai ona fa'apipi'i i le na'o le faitau.
E faapefea e lenei galuega
Fuafuaga Lautele Volumes Ephemeral
O se vaega taua o voluma ephemeral faamoemoega lautele o le puna fou voluma, EphemeralVolumeSource, o lo'o i ai uma fanua e fai ai se talosaga voluma (fa'asolopito ua ta'ua o se talosaga fa'aauau, PVC). Pule fou i totonu kube-controller-manager va'ava'ai i pusa o lo'o fa'atupuina se puna tele, ona fai lea o se PVC mo na pusa. Mo le avetaavale CSI, o lenei talosaga e foliga tutusa ma isi, o lea e leai se lagolago faʻapitoa e manaʻomia iinei.
Afai lava e iai ia PVC, e mafai ona faʻaaogaina e pei o isi talosaga ile voluma. Aemaise lava, e mafai ona faʻasinoina o se faʻamatalaga faʻamatalaga pe a kopiina se voluma poʻo le fatuina o se ata mai se voluma. O le mea PVC o loʻo i ai foi le tulaga o loʻo i ai nei o le voluma.
O igoa o PVC e otometi ona fatuina ua muaʻi faʻamalamalamaina: o se tuʻufaʻatasiga o le igoa pod ma le igoa voluma, e vavaeeseina e se vase. O igoa ua uma ona fa'avasegaina e faigofie ai ona fegalegaleai ma le PVC aua e te le tau su'eina pe a e iloa le igoa pod ma le voluma igoa. O le pito i lalo o le igoa atonu o loʻo faʻaaogaina, lea e iloa e Kubernetes ma o se taunuuga ua poloka le pod mai le amataina.
Ina ia mautinoa ua tape le leo faatasi ma le pod, e faia e le pule se talosaga i le leo i lalo o lē e ona. A tape le pod, e galue le faiga masani o le aoina o lapisi, lea e tape uma ai le talosaga ma le leo.
O talosaga e fa'afetaui e le aveta'avale teuina e ala i le faiga masani o le vasega teuina. E ui lava o vasega e vave ma tuai ona fusifusia (aka WaitForFirstConsumer) e lagolagoina, mo voluma ephemeral e talafeagai le faʻaaogaina WaitForFirstConsumer, ona mafai lea e le tagata faʻatulagaina ona mafaufau i le faʻaogaina o le node ma le avanoa e teu ai pe a filifilia se node. O lo'o fa'aalia mai se vaega fou iinei.
Su'esu'eina Avanoa Teuina
E masani lava e leai se malamalama o le tagata faʻatulagaina poʻo fea o le a fatuina ai e le avetaavale CSI le leo. E leai foi se auala e faʻafesoʻotaʻi saʻo ai e le tagata faʻatulagaina le avetaʻavale e talosagaina lenei faʻamatalaga. O le mea lea, o le fa'asologa o taimi e palota ai se'ia maua se tasi e mafai ona maua ai voluma (tuai fa'amauina) pe tu'u le filifiliga o le nofoaga i le aveta'avale (fa'atoa fusifusia).
Fou APICSIStorageCapacity, lea o loʻo i totonu o le alpha stage, faʻatagaina faʻamaumauga talafeagai e teuina i etcd ina ia avanoa i le faʻatulagaina. E le pei o le lagolago mo voluma ephemeral faamoemoega lautele, pe a e faʻaogaina le avetaʻavale, e tatau ona e faʻatagaina le siakiina o le gafatia e teu ai: external-provisioner e tatau ona fa'asalalau fa'amatalaga agava'a na maua mai le aveta'avale e ala ile masani GetCapacity.
Afai e manaʻomia e le tagata faʻatulagaina le filifilia o se node mo se pod e leai se voluma e faʻaaogaina le tuai ona fusifusia, ma na mafai e le avetaʻavale lenei mea i le taimi o le faʻapipiʻiina e ala i le setiina o le fuʻa. CSIDriver.storageCapacity, ona otometi lava ona lafoa'i pona e le lava le gafatia e teu ai. E aoga lenei mea mo le faʻamoemoe lautele ephemeral volumes ma faifai pea, ae le mo le CSI ephemeral volumes ona e le mafai ona faitau e Kubernetes o latou faʻamau.
E pei ona masani ai, e vave ona faʻapipiʻiina voluma aʻo leʻi faʻatulagaina pods, ma o latou tuʻuina e filifilia e le avetaʻavale teuina, o lea pe a faʻapipiʻi. external-provisioner Ona o le faaletonu, o vasega teu oloa ma le fusia vave e misia, talu ai o nei faʻamatalaga o le a le faʻaaogaina.
Talu ai ona o le kubernetes scheduler ua faʻamalosia e galue ma faʻamatalaga e le o toe aoga, e leai se faʻamautinoaga o le a maua le gafatia i tulaga uma pe a faia le voluma, ae o le avanoa o le a faia e aunoa ma le toe faia e faʻateleina.
NB E mafai ona e mauaina nisi faʻamatalaga auiliili, faʻapea foʻi ma le saogalemu "faʻataʻitaʻi i luga o le pusi tu", ma i le tulaga o se tulaga e matua le malamalama atoatoa, maua fesoasoani lagolago faʻapitoa i aʻoaʻoga mamafa - Kubernetes Base o le a faia ia Setema 28-30, ma mo isi tagata tomai faapitoa Kubernetes Mega Oketopa 14–16.
Puipuiga
CSIStorageCapacity
O mea faitino CSIStorageCapacity o lo'o i totonu o igoa avanoa; pe a ta'avale ta'avale CSI ta'itasi i lona lava igoa, e fautuaina le fa'atapula'aina o aia tatau a le RBAC i le CSIStorageCapacity i lena avanoa talu ai e manino le mea e sau ai fa'amaumauga. E le siakiina e Kubernetes lenei mea, ma e masani lava ona tuʻu avetaʻavale i le igoa e tasi, o le mea mulimuli e tatau ona galulue avetaʻavale ae le faʻasalalau faʻamatalaga sese (ma o le mea lea na le manuia ai laʻu kata, tusa. faaliliu upu e faavae i luga o se tala ula)
Fuafuaga Lautele Volumes Ephemeral
Afai ei ai i tagata fa'aoga aia tatau e fai ai se pod (tu'usa'o pe le tuusao), o le a mafai foi ona latou faia ni voluma ephemeral faamoemoega lautele tusa lava pe leai ni a latou aia e fai ai se talosaga i luga o le voluma. E mafua ona o siaki fa'atagaga a le RBAC o lo'o fa'aogaina i le pule e fa'atupu le PVC, ae le o le tagata fa'aoga. O le suiga autu lea e faaopoopo i lau teugatupe, a'o le'i fa'agaoioi le vaega lea i fuifui lea e le tatau ona i ai ni aia tatau a tagata e le fa'atuatuaina e fatu ai voluma.
Faataitaiga:
Vaevae lala O le PMEM-CSI o loʻo i ai suiga uma e manaʻomia e faʻatautaia ai le Kubernetes 1.19 faʻapipiʻi i totonu o masini komepiuta QEMU faʻatasi ai ma foliga uma i le alpha stage. E leʻi suia le code avetaʻavale, naʻo le faʻapipiʻiina ua suia.
I luga o se masini talafeagai (Linux, e mafai e se tagata masani ona faʻaogaina Docker, vaai iinei faʻamatalaga) o nei tulafono o le a aumaia ai le fuifui ma faʻapipiʻi le avetaʻavale 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
A maeʻa mea uma, o le gaosiga o le a iai faʻatonuga mo le faʻaaogaina:
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 -
O meafaitino CSIStorageCapacity e le'o tatau ona faitau e tagata, o lea e mana'omia ai nisi gaioiga. Golang template filters o le a faʻaalia vasega teuina, o lenei faʻataʻitaʻiga o le a faʻaalia ai le igoa, topology ma le gafatia:
Sei o tatou taumafai e fai se talosaga fa'ata'ita'iga ma se fa'amoemoe lautele e tasi le voluma ephemeral. Fa'amau faila 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
A maeʻa ona faia, e pei ona faʻaalia i faʻatonuga o loʻo i luga, o loʻo i ai nei a matou pusa faaopoopo ma 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
Afai e manaʻomia e se isi talosaga le sili atu nai lo le 26620Mi, o le a le amanaia e le tagata faʻatulagaina pmem-csi-pmem-govm-worker1 i soo se tulaga.
o sosoo ai le a?
O foliga uma e lua o loʻo faʻaauau pea ona atinaʻe. E tele talosaga na tatalaina i le taimi o su'ega alpha. O le talosaga mo le faʻaleleia o fesoʻotaʻiga o loʻo faʻamauina ai galuega e manaʻomia ona fai e agai i le beta stage, faʻapea foʻi ma isi mea ua uma ona iloiloina ma teena: