Imleabhair Ephemeral le Rianú Acmhainne Stórála: EmptyDir ar Stéaróidigh

Imleabhair Ephemeral le Rianú Acmhainne Stórála: EmptyDir ar Stéaróidigh

Ní mór do roinnt feidhmchlár sonraí a stóráil freisin, ach tá siad compordach go leor leis an bhfíric nach sábhálfar na sonraí tar éis atosú.

Mar shampla, tá seirbhísí caching teoranta ag RAM, ach is féidir leo freisin sonraí a bhogadh go hannamh a úsáidtear chun stóráil atá níos moille ná RAM, gan tionchar beag ar fheidhmíocht fhoriomlán. Ní mór go mbeadh a fhios ag feidhmchláir eile go bhféadfadh ionchur inléite amháin a bheith sna comhaid, mar shocruithe nó eochracha rúnda.

Tá roinnt cineálacha ag Kubernetes cheana féin toirteanna gearrshaolacha, ach tá a bhfeidhmiúlacht teoranta don mhéid a chuirtear i bhfeidhm sna K8s.

Ephemeral Toirteanna CSI cheadaigh sé Kubernetes a leathnú le tiománaithe CSI chun tacaíocht a sholáthar d'imleabhair áitiúla éadroma. Ar an mbealach seo is féidir úsáid a bhaint as struchtúir treallach: socruithe, rúin, sonraí aitheantais, athróga, agus mar sin de. Ní mór tiománaithe CSI a mhodhnú chun tacú leis an ngné seo Kubernetes, ós rud é go nglactar leis nach n-oibreoidh tiománaithe caighdeánaithe rialta - ach glactar leis gur féidir méideanna den sórt sin a úsáid ar aon nód a roghnaíodh don pod.

D'fhéadfadh sé seo a bheith ina fhadhb maidir le méideanna a ídíonn acmhainní suntasacha óstaigh nó le haghaidh stórála nach bhfuil ar fáil ach ar roinnt óstach. Sin an fáth a dtugann Kubernetes 1.19 dhá ghné toirte tástála alfa isteach atá cosúil go coincheapúil le méideanna EmptyDir:

  • toirteanna gearrshaolacha ginearálta;

  • Rianú acmhainn stórála CSI.

Buntáistí an chur chuige nua:

  • is féidir stóráil a bheith áitiúil nó nasctha trí líonra;

  • is féidir méid sonraithe a bheith ag toirteanna nach féidir leis an iarratas a shárú;

  • oibríonn sé le haon tiománaithe CSI a thacaíonn le méideanna leanúnacha a sholáthar agus (chun tacú le rianú acmhainne) an glao a chur i bhfeidhm GetCapacity;

  • d'fhéadfadh go mbeadh roinnt sonraí tosaigh ag toirteanna ag brath ar an tiománaí agus na socruithe;

  • tacaítear le gach oibríocht chaighdeánach a bhfuil toirt (léiriú a chruthú, méid a athrú, etc.);

  • is féidir toirteanna a úsáid le haon rialtóir feidhmchláir a ghlacann le modúl nó le sonraíocht toirte;

  • Roghnaíonn sceidealóir Kubernetes nóid oiriúnacha leis féin, mar sin ní gá a thuilleadh síntí sceidealóra a sholáthar agus a chumrú nó cuacha gréasáin a mhodhnú.

Roghanna iarratais

Mar sin, tá toirteanna gearrshaolacha ginearálta oiriúnach do na cásanna úsáide seo a leanas:

Cuimhne sheasmhach in ionad RAM do memcached

Na heisiúintí is déanaí de memcached tacaíocht bhreise ag baint úsáide as cuimhne leanúnach (Intel Optane, etc., thart. aistritheoir) in ionad RAM rialta. Agus memcached á imscaradh trí rialtóir feidhmchlár, is féidir leat toirteanna gearrshaolacha ginearálta a úsáid chun a iarraidh go leithdháilfear toirt de mhéid áirithe ó PMEM ag baint úsáide as an tiománaí CSI, mar shampla PMEM-CSI.

Stóráil áitiúil LVM mar spás oibre

D’fhéadfadh go n-éileoidh feidhmchláir a oibríonn le sonraí atá níos mó ná RAM stóráil áitiúil le méadracht mhéid nó feidhmíochta nach féidir le méideanna rialta EmptyDir ó Kubernetes a sholáthar. Mar shampla, chun na críche seo a bhí sé scríofa TopoLVM.

Rochtain inléite amháin le haghaidh toirteanna sonraí

Is féidir imleabhar iomlán a chruthú mar thoradh ar leithdháileadh toirte nuair:

Is féidir na himleabhair seo a shuiteáil i mód inléite amháin.

Conas a oibríonn seo

Imleabhair Chuspóra Ghinearálta

Príomhghné de thoirteanna gearrshaolacha ginearálta is ea an fhoinse toirte nua, EphemeralVolumeSource, ina bhfuil na réimsí go léir chun iarratas toirte a chruthú (ar a dtugtar go stairiúil iarratas toirte leanúnach, PVC). Rialaitheoir nua i kube-controller-manager Breathnaíonn sé ar na pods a chruthaíonn foinse toirte den sórt sin, agus ansin cruthaítear PVC do na pods sin. Maidir leis an tiománaí CSI, tá an chuma ar an iarratas seo leis na cinn eile, mar sin níl aon tacaíocht speisialta ag teastáil anseo.

Chomh fada agus a bhíonn PVC den sórt sin ann, is féidir iad a úsáid mar aon iarratais eile ar an toirt. Go háirithe, is féidir tagairt a dhéanamh dóibh mar fhoinse sonraí nuair a bhíonn imleabhar á chóipeáil nó chun pictiúr a chruthú as imleabhar. Tá staid reatha an toirte sa réad PVC freisin.

Tá ainmneacha PVC a chruthaítear go huathoibríoch réamhshainithe: is meascán iad den ainm pod agus an t-ainm toirte, scartha le fleiscín. Déanann ainmneacha réamhshainithe sé níos éasca idirghníomhú leis an PVC mar ní gá duit é a chuardach má tá ainm an phota agus ainm toirte ar eolas agat. Is é an míbhuntáiste go bhféadfadh an t-ainm a bheith in úsáid cheana féin, rud a bhraitheann Kubernetes agus mar thoradh air sin tá bac ar an pod tosú.

Chun a chinntiú go scriostar an toirt mar aon leis an pod, déanann an rialtóir iarraidh ar an toirt faoin úinéir. Nuair a scriostar an pod, oibríonn an meicníocht chaighdeánach bailithe truflais, rud a scriosann an t-iarratas agus an toirt araon.

Déanann an tiománaí stórála iarratais a mheaitseáil trí ghnáthmheicníocht an ranga stórála. Cé go bhfuil ranganna le ceangailteach láithreach agus déanach (aka WaitForFirstConsumer) are supported, le haghaidh toirteanna gearrshaolacha déanann sé ciall úsáid a bhaint as WaitForFirstConsumer, ansin is féidir leis an sceidealóir úsáid nód agus infhaighteacht stórála a mheas nuair a bhíonn nód á roghnú aige. Tá gné nua le feiceáil anseo.

Rianú Cumais Stórála

Go hiondúil níl aon eolas ag an sceidealóir faoin áit a gcruthóidh an tiománaí CSI an toirt. Níl aon bhealach ach oiread ag an sceidealóir dul i dteagmháil leis an tiománaí go díreach chun an fhaisnéis seo a iarraidh. Mar sin, déanann an sceidealóir vótaíocht nóid go dtí go bhfaighidh sé ceann ar a bhféadfar teacht ar mhéideanna (ceangailteach déanach) nó fágtar an rogha suímh go hiomlán ag an tiománaí (ceangailteach láithreach).

Nua API CSIStorageCapacity, atá sa chéim alfa, is féidir na sonraí riachtanacha a stóráil in etcd ionas go mbeidh siad ar fáil don sceidealóir. Murab ionann agus tacaíocht le haghaidh toirteanna gearrshaolacha ginearálta, agus an tiománaí á imscaradh agat, ní mór duit rianú toilleadh stórála a chumasú: external-provisioner an fhaisnéis faoi thoilleadh a fuarthas ón tiománaí a fhoilsiú mar is gnách GetCapacity.

Má theastaíonn ón sceidealóir nód a roghnú le haghaidh pod le toirt neamhcheangailte a úsáideann ceangal déanach, agus chuir an tiománaí ar chumas an ghné seo le linn imlonnaithe tríd an mbratach a shocrú CSIDriver.storageCapacity, ansin déanfar nóid nach bhfuil go leor toilleadh stórála a chaitheamh i leataobh go huathoibríoch. Oibríonn sé seo le haghaidh toirteanna gearrshaolacha ginearálta agus marthanacha, ach ní le haghaidh toirteanna gearrshaolacha CSI toisc nach féidir le Kubernetes a paraiméadair a léamh.

Mar is gnách, cruthaítear méideanna atá nasctha láithreach sula mbíonn na pods sceidealaithe, agus roghnaíonn an tiománaí stórála a socrúchán, mar sin agus iad á chumrú external-provisioner De réir réamhshocraithe, ní dhéantar ranganna stórála le ceangal láithreach, toisc nach n-úsáidfear na sonraí seo ar aon nós.

Ós rud é go gcuirtear iallach ar an sceidealóir kubernetes oibriú le faisnéis a d’fhéadfadh a bheith as dáta, níl aon ráthaíocht ann go mbeidh acmhainn ar fáil i ngach cás nuair a chruthaítear an méid, ach mar sin féin méadaítear an seans go gcruthófar é gan atriail.

NB Is féidir leat faisnéis níos mionsonraithe a fháil, chomh maith le “cleachtadh ar sheastán na gcait” go sábháilte, agus i gcás staid go hiomlán dothuigthe, cúnamh tacaíochta teicniúil cáilithe a fháil ag dianchúrsaí - Bonn Kubernetes a bheidh ar siúl ar 28-30 Meán Fómhair, agus do speisialtóirí níos airde Cubernetes Mega 14-16 Deireadh Fómhair.

slándála

Cumas CSISstorage

Cónaíonn réada CSIStorageCapacity in ainmspásanna; agus gach tiománaí CSI á rolladh amach ina ainmspás féin, moltar cearta RBAC a theorannú don CSIStorageCapacity sa spás sin toisc gur léir cé as a dtagann na sonraí. Ní seiceálann Kubernetes é seo ar aon nós, agus de ghnáth cuirtear tiománaithe san ainmspás céanna, mar sin sa deireadh bítear ag súil go n-oibreoidh na tiománaithe agus nach bhfoilseoidh siad sonraí míchearta (agus seo an áit ar theip ar mo chárta, thart. aistritheoir bunaithe ar joke féasóg)

Imleabhair Chuspóra Ghinearálta

Má tá cearta ag úsáideoirí pod a chruthú (go díreach nó go hindíreach), beidh siad in ann toirteanna gearrshaolacha ginearálta a chruthú fiú mura bhfuil cearta acu iarratas ar an toirt a chruthú. Tá sé seo amhlaidh toisc go gcuirtear seiceálacha cead RBAC i bhfeidhm ar an rialtóir a chruthaíonn an PVC, ní ar an úsáideoir. Is é seo an príomh-athrú le cur chuig do chuntas, sula gcumasaítear an ghné seo ar bhraislí inar cheart nach mbeadh cearta ag úsáideoirí neamhiontaofa méideanna a chruthú.

Sampla

Scartha ciorcal Tá na hathruithe riachtanacha go léir ag PMEM-CSI chun braisle Kubernetes 1.19 a reáchtáil taobh istigh de mheaisíní fíorúla QEMU leis na gnéithe go léir sa chéim alfa. Níor athraigh an cód tiománaí, níor athraigh ach an t-imscaradh.

Ar mheaisín oiriúnach (Linux, is féidir le gnáthúsáideoir a úsáid dhugaire, cuma anseo sonraí) tabharfaidh na horduithe seo suas an braisle agus suiteáilfidh siad an tiománaí 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

Tar éis gach rud a bheith ag obair, beidh treoracha úsáide san aschur:

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 -

Níl sé i gceist go léifidh daoine oibiachtaí CSIStorageCapacity, mar sin tá gá le roinnt próiseála. Taispeánfaidh scagairí teimpléid Golang na ranganna stórála, taispeánfaidh an sampla seo an t-ainm, an topology agus an toilleadh:

$ 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

Tá an t-ábhar seo a leanas ag réad amháin:

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

Déanaimis iarracht feidhmchlár taispeána a chruthú le toirt gearrshaolach ginearálta amháin. Ábhar an chomhaid 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

Tar éis a chruthú, mar a thaispeántar sna treoracha thuas, tá pod breise agus PVC againn anois:

$ 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

Úinéir PVC - faoi:

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

Eolas nuashonraithe ag súil le haghaidh 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

Má theastaíonn níos mó ná 26620Mi le feidhmchlár eile, ní chuirfidh an sceidealóir san áireamh pmem-csi-pmem-govm-worker1 ar aon nós.

Cad atá romhainn?

Tá an dá ghné fós á bhforbairt. Osclaíodh roinnt feidhmchlár le linn na tástála alfa. Nascann an togra feabhsúcháin an obair is gá a dhéanamh chun bogadh go dtí an chéim béite, chomh maith leis na roghanna eile ar breithníodh agus ar diúltaíodh dóibh cheana:

Foinse: will.com

Add a comment