Ephemeral Volume with Repono Capacity Tracking: EmptyDir on Steroids

Ephemeral Volume with Repono Capacity Tracking: EmptyDir on Steroids

Aliquae applicationes etiam ad notitias reponendas necessariae sunt, sed satis commode sunt eo quod notitia non salvabitur post sileo.

Exempli gratia, servitia caching RAM finiuntur, sed etiam notitias movere possunt, quae raro ad reponendam quae tardior est quam RAM adhibentur, cum parvis momentis in altiore effectu. Aliae applicationes scire necesse est ut quaedam in schedulis lecta tantum inputentur, ut occasus vel claves secretas.

Kubernetes iam plura genera durantia voluminased functiones eorum limitatur ad id quod in K8s impletur.

Ephemeral CSI volumina licet Kubernetes cum rectoribus CSI extendi ut volumina localia levibus subsidia praeberent. Hoc modo uti potest arbitraria structuraeoccasus, secreta, agnitio data, variabilis, et sic porro. CSI regentes mutari debent ad hanc plumam Kubernetes, cum ponatur rectores regulares normas non operari - sed ponatur tales codices quolibet nodi delecti ad vasculum adhiberi posse.

Hoc problema esse potest pro voluminibus qui opes exercitus significantes consumunt vel pro repono quod tantum in aliquibus exercitibus praesto est. Quam ob rem Kubernetes 1.19 inducit duas notas novas alpha probatio voluminis, quae ratione similia voluminibus EmptyDir sunt:

  • propositi generalis ephemeridis voluminibus;

  • CSI capacitatem repono tracking.

Accedunt commoda novae;

  • repositio potest esse localis vel connexa per modum retis;

  • possunt volumina certam magnitudinem habere quae applicatione excedere non potest;

  • operatur cum omnibus rectoribus CSI qui subsidia voluminum assiduorum praebuerunt et (ad facultatem semitam sustinendam) vocationem efficiendam GetCapacity;

  • volumina fortasse initiales quasdam notitias a rectore et uncinis pendentes habere possunt;

  • omnes operationes normae cum volumine (creando snapshot, resiendo, etc.) sustentantur;

  • volumina adhiberi possunt cum aliqua applicatione moderatoris, qui moduli seu voluminis speciem accipit;

  • Kubernetes cedularum nodi aptas de se ipso deligit, quare iam nulla necessitas est provisioni ac extensionibus cedularibus conformare vel telas mutare.

application options

Ideo genera propositi ephemeralia sunt apta ad sequentes casus usus;

Pertinax memoria ut substitutio RAM pro memcached

Tardus solvo memcached additae firmamentum adsidua memoria utens (Intel Optane, etc. proxime. translator) Ram pro regulari. Cum memcached per applicationem moderatoris disponis, propositis ephemeralibus voluminibus generalibus uti potes ad petendum ut volumen magnitudinis datae ab PMEM utente rectore CSI distribuatur, e.g. PMEM-CSI.

LVM loci repono in workspace

Applicationes, quae cum data operantur maior quam RAM, requiri possunt repositiones locales cum magnitudine vel metris faciendis quae regulares codices EmptyDir e Kubernetes praebere non possunt. For example, for this purpose was written TopoLVM.

Legere solum aditus ad data volumina

M. Porcius Cato provenire potest in creatione voluminis pleni;

Haec volumina solum modo legi possunt.

Quam facit hoc opus

General Propositum Ephemeral Volumes

Praecipua notatio generalis propositi voluminum ephemeralium est novus fons voluminis; EphemeralVolumeSourcecontinens omnes agros ad petitionem voluminis creare (historice appellatum petitionem constans volumen, PVC). Novus moderatoris in kube-controller-manager siliquas spectat, quae talem voluminis fontem creant, et postea siliquas illas facit PVC. Ad CSI auriga, postulatio haec idem ac ceteri spectat, ut nullum speciale subsidium hic opus sit.

Quamdiu tales PVCs existunt, adhiberi possunt sicut aliae petitiones in volumine. Praesertim, ut fons notitiae referatur, cum exscriberet volumen vel e globo scapham crearet. Objectum PVC etiam hodiernum voluminis statum continet.

Nomina automatice creatae PVCs praefixa sunt: ​​compositum est nomen vasculi et nomen voluminis, per hyphen separatum. Nomina praedefinita faciliorem reddunt cum PVC correspondeant quia non debes quaerere si nomen et nomen voluminis scis. Declinatio est ut nomen iam in usu sit, quod Kubernetes deprehenditur et consequenter vasculum a principio praeclusum est.

Ut volumen una cum vasculo deletum sit, moderator rogat volumen sub possessore. Cum vasculum deletum est, vexillum purgamentum collectionis mechanismi opera, quae tum rogatu et volumine delet.

Petitiones adaequantur a coegi per normalem machinamentum repositionis ordinis. Etsi classes immediatam ac nuper binding (aka WaitForFirstConsumer) sustentantur, ad ephemeridas volumina sensum adhibendum facit WaitForFirstConsumertunc schedula considerare potest tam nodi consuetudinem quam promptitudinem repositam cum nodi eligens. Novum hic apparet pluma.

Capacitas mauris repono

De more schedulae nullam notitiam habet ubi coegi CSI volumen creabit. Nullo etiam modo est schedula ut aurigam directe contactum huius informationis petat. Ideo in schedularum capitum nodi usque inuenit unum in quo volumina accedere possunt (late ligamen) vel electionem loci omnino relinquat exactori (obligatio immediata).

novum API CSIStorageCapacityquae in theatro alpha est, permittit necessarios notitias in etcd reponendas ut schedula suppetat. Secus subsidium ad genera propositi volumina ephemeralia, cum rectorem explicas, capacitatem repositionis sequi debes: external-provisioner ut publicaret facultatem informationes accepimus ab exactoris per normalem GetCapacity.

Si cedularum opus est eligere nodo folliculi cum soluto volumine, qui nuper ligando utitur, et exactor hanc plumam in instruere statuit vexillum ponendo. CSIDriver.storageCapacitytunc nodi qui capacitatem repositam non satis habent, automatice abicientur. Haec opera ad tam generalem finem volumina ephemeralia et assidua, non tamen pro CSI volumina evanida sunt quia eorum parametri a Kubernetes legi non possunt.

Ut mos est, volumina statim coniuncta creantur antequam siliquae accedant, collocatio eorum eligitur a rectore repositorium, ita cum configurans. external-provisioner Defalta, classes repositae cum ligamento immediato praetermittendae sunt, quia haec notitia nullo usquam usui erit.

Cum kubernetes schedulae cum potentia extra notitias elaborare cogantur, nulla cautione praestabitur facultatem in omni casu cum creatur, sed casus ut sine retries creetur nihilominus augebitur.

NB Plus informationes accipere potes, ac tuto "exercitatio in felibus stare", et si casus omnino incomprehensibilis condicionis technicae subsidii in intensivis cursubus subsidia recipiat. Kubernetes Base die 28 septembris celebrabitur, et pro peritioribus provectioribus Kubernetes Mega Octobris 14-16.

salutem

CSIStorageCapacity

CSIStorage Capacitas objecta in spatiis nominalibus resident, cum singulas CSI aurigas in suo nomine evolvit, commendatur RBAC iura ad CSIStorage Capacitatis in illo spatio restringere, cum patet ubi notitia oritur. Kubernetes hoc usquam non inhibet, ac plerumque rectores in eodem spatio nominantur, ut denique rectores exspectantur ad operandum et non data falsa evulganda (et hoc est ubi charta mea defecit; proxime. interpres fundatur in iocus barbatus)

General Propositum Ephemeral Volumes

Si usores habent iura creandi vasculum (directe vel indirecte), ipsi etiam genera propositi volumina ephemeralia creare possunt etiam si iura non habent petitionem in volumine creandi. Causa est, quia RBAC licentia compescit applicata moderatori PVC creat, non utentis. Haec est principalis mutatio addere ad rationem vestramantequam haec factura in racemis ubi creditorum usorum iura creandi volumina non habeat.

exempli gratia

Separate genere PMEM-CSI continet omnes mutationes necessarias ad currendum a Kubernetes 1.19 botrum intra QEMU machinis virtualis cum omnibus lineamentis in scaena alpha. Auriga signum non mutavit, solum instruere mutata est.

Apparatus apto (Linux, usor normali uti potest" Docker, vide hic singula) haec mandata botrum portabunt et rectorem PMEM-CSI instituent;

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

Post omnia opera, output instructiones ad usum continebit:

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 -

CSIStorage Capacitas obiecti non ab hominibus legi destinatur, ergo processus quidam requiritur. Golang templates filters ostendet classes repositiones, hoc exemplum nomen, topologiam et capacitatem ostendet;

$ 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

Una res habet sequenti contentus:

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

Studeamus applicationis demom creare cum uno proposito generali ephemerali volumine. Tabularium contentorum 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

Post partum, ut supra in mandatis exposuimus, nunc vasculum et PVC additamentum habemus;

$ 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 dominus - minores:

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

Expectatur updated informationem pro 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

Si alia applicatio plus indiget quam 26620Mi, in schedula rationem non habebit pmem-csi-pmem-govm-worker1 in omni causa.

Quid deinde?

Utraque lineamenta adhuc in evolutione sunt. Aliquot applicationes in probatione alpha aperiebantur. Emendatio propositio nexus documenti operis, quod fieri debet, ad betam scaenam movendam, necnon quae alternativa iam considerata et reiecta sunt;

Source: www.habr.com