Nga Rorohiko Ephemeral me te Aroturuki Rokiroki: EmptyDir i runga i nga Steroids

Nga Rorohiko Ephemeral me te Aroturuki Rokiroki: EmptyDir i runga i nga Steroids

Ko etahi o nga tono e hiahia ana ki te penapena raraunga, engari he tino pai ki te kore e tiakina nga raraunga i muri i te tiimatanga.

Hei tauira, ko nga ratonga keteroki e whakawhäitihia ana e te RAM, engari ka taea hoki te nuku i nga raraunga kaore e whakamahia ana ki te rokiroki he puhoi ake i te RAM, me te iti o te paanga ki nga mahi katoa. Ko etahi atu tono me mohio kei kona ano etahi whakauru panui-anake i roto i nga konae, penei i nga tautuhinga, i nga taviri ngaro ranei.

He maha nga momo a Kubernetes pukapuka ephemeral, engari he iti noa o raatau mahi ki nga mea kua whakatinanahia i roto i nga K8.

Ephemeral Ko nga waahanga mo te CSI i whakaaetia kia whakawhänuihia nga Kubernetes me nga taraiwa CSI ki te whakarato tautoko mo nga pukapuka iti o te rohe. Ma tenei ka taea te whakamahi nga hanganga hangai: tautuhinga, mea ngaro, raraunga tautuhi, taurangi, me etahi atu. Me whakarereke nga taraiwa CSI ki te tautoko i tenei ahuatanga Kubernetes, i te mea e kiia ana ka kore e mahi nga taraiwa paerewa - engari e kiia ana ka taea te whakamahi i aua pukapuka ki runga i tetahi pona kua tohua mo te pod.

He raru pea tenei mo nga pukapuka e pau ana i nga rauemi manaaki, mo te rokiroki ranei e waatea ana ki etahi kaihautu. Koia te take ka tukuna e Kubernetes 1.19 nga ahuatanga hou e rua o nga waahanga whakamatautau alpha e rite ana ki nga pukapuka EmptyDir:

  • pukapuka ephemeral kaupapa whānui;

  • Aroturuki kaha rokiroki CSI.

Nga painga o te huarahi hou:

  • Ko te rokiroki ka taea te rohe, te hono ranei ma te whatunga;

  • Ka taea e nga pukapuka te rahi te rahi e kore e taea te neke ake i te tono;

  • Ka mahi tahi me nga taraiwa CSI e tautoko ana i te whakarato i nga pukapuka e mau tonu ana me te (hei tautoko i te kaha ki te whai i te kaha) ka whakatinana i te waea. GetCapacity;

  • kei roto pea i nga pukapuka etahi raraunga tuatahi i runga i te taraiwa me nga tautuhinga;

  • ka tautokohia nga mahinga paerewa katoa me te rōrahi (te hanga pikitia, te whakarereke i te rahi, me etahi atu);

  • ka taea te whakamahi i nga pukapuka me tetahi kaiwhakahaere tono e whakaae ana ki te waahanga, ki te tohu pukapuka ranei;

  • Ka kowhiria e te Kai-whakahōtaka a Kubernetes nga pona e tika ana, no reira kua kore he hiahia ki te whakarato me te whirihora i nga toronga kaihōtaka, ki te whakarereke ranei i nga matau tukutuku.

Kōwhiringa tono

Na reira, he pai nga pukapuka ephemeral kaupapa whanui mo nga keehi e whai ake nei:

Te mahara tonu hei whakakapi mo te RAM mo te memcached

Nga putanga hou o memcached tautoko taapiri te whakamahi i te mahara tonu (Intel Optane, etc., āhua. kaiwhakamaori) hei utu mo te RAM auau. I te wa e tuku ana i te memcached i roto i te kaiwhakahaere tono, ka taea e koe te whakamahi i nga pukapuka ephemeral kaupapa whanui ki te tono kia tohatohahia he rōrahi o te rahi mai i te PMEM ma te whakamahi i te taraiwa CSI, hei tauira. PMEM-CSI.

LVM rokiroki rohe hei mokowāmahi

Ko nga tono e mahi ana me nga raraunga nui ake i te RAM ka hiahia pea ki te rokiroki rohe me te rahi me nga ine mahi e kore e taea e nga pukapuka EmptyDir auau mai i Kubernetes te whakarato. Hei tauira, mo tenei kaupapa i tuhia TopoLVM.

Te urunga panui-anake mo nga rahinga raraunga

Ka taea e te tohatoha o te rōrahi te hanga i te rōrahi katoa ina:

Ka taea te whakauru i enei pukapuka ki te aratau panui-anake.

Nahea teie ohipa

Nga Putanga Ephemeral Kaupapa Whanui

Ko tetahi ahuatanga nui o nga pukapuka ephemeral kaupapa whanui ko te puna pukapuka hou, EphemeralVolumeSource, kei roto nga mara katoa hei hanga tono rōrahi (i mua ka kiia he tono rōrahi tohe, PVC). Pūmana hou ki roto kube-controller-manager ka titiro ki nga pokano e hanga ana i te puna pukapuka penei, katahi ka hanga he PVC mo aua peera. Mo te taraiwa CSI, he rite tonu te ahua o tenei tono ki era atu, no reira kaore e hiahiatia he tautoko motuhake i konei.

I te wa e noho ana enei PVC, ka taea te whakamahi pera i etahi atu tono mo te rōrahi. Ina koa, ka taea te tohu hei puna raraunga i te kape i te rōrahi, i te waihanga whakaahua mai i te rōrahi. Kei roto hoki i te ahanoa PVC te ahua o te rōrahi o nāianei.

Ko nga ingoa o nga PVC i hangaia aunoatia kua tautuhia: he huinga o te ingoa pona me te ingoa rōrahi, ka wehea e te tohuhono. Ko nga ingoa kua tautuhia ake ka ngawari ake te taunekeneke me te PVC na te mea kaore koe e rapu mena ka mohio koe ki te ingoa pona me te ingoa rōrahi. Ko te kino ko te ingoa kei te whakamahia kee, ka kitea e Kubernetes, na reira ka aukatihia te pod mai i te tiimata.

Hei whakarite kia mukua te rōrahi me te pona, ka tono te kaiwhakahaere ki te rōrahi i raro i te rangatira. Ina mukua te poti, ka mahi te tikanga kohinga paru paerewa, ka mukua te tono me te rōrahi.

Ko nga tono ka whakatauritehia e te taraiwa rokiroki na roto i te tikanga o te akomanga rokiroki. Ahakoa nga karaehe me te here tonu me te mutunga o te here (aka WaitForFirstConsumer) e tautokohia ana, mo nga pukapuka ephemeral he mea tika ki te whakamahi WaitForFirstConsumer, katahi ka taea e te kaiwhakariterite te whakaaro mo te whakamahi node me te waatea mo te rokiroki i te wa e whiriwhiri ana i tetahi node. Ka puta mai he ahuatanga hou i konei.

Aroturuki Raukaha Rokiroki

I te nuinga o te wa karekau he mohiotanga o te kaiwhakarite mo te waahi ka hangaia e te taraiwa CSI te rōrahi. Kare hoki he huarahi mo te kaiwhakariterite ki te whakapiri tika atu ki te taraiwa ki te tono i enei korero. No reira, ka pooti te kaihōtaka kia kitea ra ano he pukapuka ka taea te uru atu (te mutunga o te here) ka waiho ranei te kowhiringa o te waahi ki te taraiwa (ka herea tonu).

New API CSIStorageCapacity, kei roto i te wahanga alpha, ka taea te penapena i nga raraunga e tika ana ki roto etcd kia watea ai ki te kaitakataka. Kaore i rite ki te tautoko mo nga pukapuka ephemeral kaupapa whanui, ka tukuna e koe te taraiwa, me whakaahei koe ki te aroturuki i te kaha rokiroki: external-provisioner me whakaputa nga korero kaha ka riro mai i te taraiwa ma te tikanga GetCapacity.

Mena ka hiahia te kaihōtaka ki te kowhiri i tetahi pona mo te pona me te rōrahi kore e herea e whakamahi ana i te here o te mutunga, a ka whakahohea e te taraiwa tenei ahuatanga i te wa e hora ana ma te tautuhi i te haki. CSIDriver.storageCapacity, ka maka aunoa nga pona karekau i te rahi te kaha rokiroki. Ka mahi tenei mo nga pukapuka ephemeral me te tohe tonu, engari kaua mo nga pukapuka ephemeral CSI na te mea kaore e taea e Kubernetes o raatau tawhā te panui.

Ka rite ki o mua, ka hangaia nga pukapuka hono tonu i mua i te wa e whakaritea ai nga poti, a ka kowhiria e te taraiwa rokiroki, na i te wa e whirihora ana. external-provisioner Ma te taunoa, ka pekehia nga karaehe rokiroki me te here tonu, na te mea karekau enei raraunga e whakamahia.

I te mea ka akiakihia te Kaihōtaka kubernetes ki te mahi me nga korero kua tawhitotia pea, kaore he taurangi ka waatea te kaha i nga keehi katoa ka waihangahia te rōrahi, engari ka piki ake te tupono ka hangaia me te kore ngana ano.

NB Ka taea e koe te tiki atu i nga korero taipitopito, me te "whakangungu tika i runga i nga ngeru", me te mea he ahuatanga tino kore e maarama, whiwhi awhina tautoko hangarau whai mana i nga akoranga kaha - Kubernetes Base ka tu hei te 28-30 o Hepetema, mo nga tohunga matatau ake Kubernetes Mega Oketopa 14–16.

Haumarutanga

CSIStorageCapacity

Ko nga taonga CSIStorageCapacity kei roto i nga mokowāingoa; i te wa e hurihia ana ia taraiwa CSI ki tana ake mokowāingoa, ka tūtohuhia kia whakawhāitihia nga mana RBAC ki te CSIStorageCapacity i taua waahi i te mea e kitea ana no hea nga raraunga. Kare a Kubernetes e aro ki tenei, a ko te tikanga ka whakauruhia nga taraiwa ki roto i te mokowāingoa kotahi, no reira me mahi nga taraiwa me te kore e whakaputa i nga raraunga hē (a koinei te waahi i rahua ai taku kaari, āhua. he kaiwhakamaori i runga i te kata whakahiato)

Nga Putanga Ephemeral Kaupapa Whanui

Mēnā he mana ngā kaiwhakamahi ki te waihanga i tētahi pōro (tikanga, autaki ranei), ka taea hoki e ratou te hanga pukapuka ephemeral kaupapa whanui ahakoa karekau he mana ki te hanga tono i runga i te rōrahi. Ko tenei na te mea ka tukuna nga arowhai whakaaetanga RBAC ki te kaiwhakahaere nana i hanga te PVC, kaua ki te kaiwhakamahi. Koinei te huringa matua hei taapiri ki tō pūkete, i mua i te whakaahei i tenei ahuatanga ki nga tautau karekau he mana o nga kaiwhakamahi kore pono ki te hanga pukapuka.

Hei tauira:

Wehewehe peka Kei roto i te PMEM-CSI nga huringa katoa hei whakahaere i te roopu Kubernetes 1.19 i roto i nga miihini mariko QEMU me nga ahuatanga katoa i te atamira alpha. Ko te waehere taraiwa kaore i rereke, ko te tohatoha anake kua rereke.

I runga i te miihini tika (Linux, ka taea e te kaiwhakamahi noa te whakamahi Docker, titiro konei taipitopito) ma enei whakahau e kawe ake te kahui me te whakauru i te taraiwa 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

I muri i nga mahi katoa, kei roto i te putanga nga tohutohu mo te whakamahi:

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 -

Ko nga taonga CSIStorageCapacity ehara i te mea kia panuihia e te tangata, no reira ka hiahiatia etahi tukatuka. Ko nga whiriwhiringa tauira a Golang ka whakaatu i nga karaehe rokiroki, ma tenei tauira e whakaatu te ingoa, topology me te kaha:

$ 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

Kei roto i tetahi ahanoa te ihirangi e whai ake nei:

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

Me ngana tatou ki te hanga i tetahi tono demo me te reo ephemeral kaupapa kotahi. Ihirangi kōnae 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

I muri i te hanga, pera i nga tohutohu i runga ake nei, kei a maatau he putea taapiri me te 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

Kaipupuri PVC - kei raro:

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

Ko nga korero kua whakahoutia mo 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

Mena kei te hiahia tetahi atu tono neke atu i te 26620Mi, karekau te kaihōtaka e whai whakaaro pmem-csi-pmem-govm-worker1 ahakoa he aha.

He aha te i muri?

Kei te whanake tonu nga ahuatanga e rua. He maha nga tono i whakatuwherahia i te wa o te whakamatautau alpha. Ko nga hononga tono whakapainga e tuhi ana i nga mahi e tika ana kia neke atu ki te atamira beta, me era atu huarahi kua whakaarohia, kua whakakahoretia:

Source: will.com

Tāpiri i te kōrero