ProHoster > Блог > Administrasi > Volume Ephemeral karo Nelusuri Kapasitas Storage: EmptyDir ing Steroid
Volume Ephemeral karo Nelusuri Kapasitas Storage: EmptyDir ing Steroid
Sawetara aplikasi uga kudu nyimpen data, nanging padha cukup nyaman karo kasunyatan sing data ora bakal disimpen sawise miwiti maneh.
Contone, layanan caching diwatesi dening RAM, nanging uga bisa mindhah data sing arang digunakake kanggo panyimpenan sing luwih alon tinimbang RAM, karo sethitik impact ing kinerja sakabèhé. Aplikasi liyane kudu ngerti yen bisa uga ana sawetara input mung diwaca ing file, kayata setelan utawa kunci rahasia.
Kubernetes wis duwe sawetara jinis volume ephemeral, nanging fungsi sing diwatesi kanggo apa dileksanakake ing K8s.
Ephemeral volume CSI ngidini Kubernetes ditambah karo driver CSI kanggo nyedhiyakake dhukungan kanggo volume lokal sing entheng. Kanthi cara iki bisa digunakake struktur sembarang: setelan, rahasia, data identifikasi, variabel, lan liya-liyane. Pembalap CSI kudu diowahi kanggo ndhukung fitur Kubernetes iki, amarga dianggep pembalap standar biasa ora bisa digunakake - nanging dianggep volume kasebut bisa digunakake ing sembarang simpul sing dipilih kanggo pod.
Iki bisa uga dadi masalah kanggo volume sing nggunakake sumber daya host sing signifikan utawa kanggo panyimpenan sing mung kasedhiya ing sawetara host. Pramila Kubernetes 1.19 ngenalake rong fitur volume tes alpha anyar sing konseptual padha karo volume EmptyDir:
volume ephemeral tujuan umum;
Nelusuri kapasitas panyimpenan CSI.
Kauntungan saka pendekatan anyar:
panyimpenan bisa lokal utawa disambungake liwat jaringan;
volume bisa duwe ukuran tartamtu sing ora bisa ngluwihi aplikasi;
bisa digunakake karo driver CSI sing ndhukung provisioning volume terus-terusan lan (kanggo ndhukung pelacakan kapasitas) ngleksanakake telpon GetCapacity;
volume bisa uga duwe sawetara data awal gumantung ing driver lan setelan;
kabeh operasi standar kanthi volume (nggawe snapshot, ngowahi ukuran, etc.) didhukung;
volume bisa digunakake karo sembarang controller aplikasi sing nampa modul utawa specification volume;
Penjadwal Kubernetes milih simpul sing cocog dhewe, dadi ora perlu maneh nyedhiyakake lan ngatur ekstensi panjadwal utawa ngowahi webhooks.
Opsi aplikasi
Mulane, volume ephemeral tujuan umum cocok kanggo kasus panggunaan ing ngisor iki:
memori ngengkel minangka panggantos kanggo RAM kanggo memcached
Rilis paling anyar saka memcached ditambahake dhukungan nggunakake memori sing terus-terusan (Intel Optane, lsp., kira-kira. penerjemah) tinimbang RAM biasa. Nalika nyebarake memcached liwat pengontrol aplikasi, sampeyan bisa nggunakake volume ephemeral tujuan umum kanggo njaluk volume saka ukuran tartamtu diparengake saka PMEM nggunakake driver CSI, contone. PMEM-CSI.
Panyimpenan lokal LVM minangka ruang kerja
Aplikasi sing bisa nganggo data sing luwih gedhe tinimbang RAM bisa uga mbutuhake panyimpenan lokal kanthi ukuran utawa metrik kinerja sing ora bisa diwenehake dening volume EmptyDir biasa saka Kubernetes. Contone, kanggo maksud iki ditulis TopoLVM.
Akses mung diwaca kanggo volume data
Alokasi volume bisa nyebabake nggawe volume lengkap nalika:
Volume kasebut bisa dipasang ing mode mung diwaca.
Carane ora karya iki
Volume Ephemeral Tujuan Umum
Fitur utama volume ephemeral tujuan umum yaiku sumber volume anyar, EphemeralVolumeSource, ngemot kabeh kolom kanggo nggawe panjalukan volume (sacara historis diarani panyuwunan volume terus-terusan, PVC). Pengontrol anyar ing kube-controller-manager katon ing pods sing nggawe sumber volume kuwi, lan banjur nggawe PVC kanggo pods sing. Kanggo pembalap CSI, panjalukan iki katon padha karo liyane, mula ora ana dhukungan khusus sing dibutuhake ing kene.
Anggere PVCs kuwi ana, padha bisa digunakake kaya panjalukan liyane ing volume. Utamane, bisa dirujuk minangka sumber data nalika nyalin volume utawa nggawe snapshot saka volume. Objek PVC uga ngemot kahanan volume saiki.
Jeneng-jeneng saka PVC sing digawe kanthi otomatis wis ditemtokake: iku kombinasi saka jeneng pod lan jeneng volume, dipisahake dening hyphen. Jeneng sing wis ditemtokake luwih gampang kanggo sesambungan karo PVC amarga sampeyan ora kudu nggoleki yen sampeyan ngerti jeneng pod lan jeneng volume. Kelemahane yaiku jeneng kasebut bisa uga wis digunakake, sing dideteksi dening Kubernetes lan minangka asil pod diblokir wiwit diwiwiti.
Kanggo mesthekake yen volume dibusak bebarengan karo pod, controller nggawe panjalukan kanggo volume ing pemilik. Nalika polong dibusak, mekanisme pengumpulan sampah standar bisa digunakake, sing mbusak panjalukan lan volume.
Panyuwunan dicocogake dening driver panyimpenan liwat mekanisme normal saka kelas panyimpenan. Senajan kelas karo langsung lan pungkasan naleni (aka WaitForFirstConsumer) sing didhukung, kanggo volume ephemeral iku ndadekake pangertèn kanggo nggunakake WaitForFirstConsumer, banjur panjadwal bisa nimbang panggunaan simpul lan kasedhiyan panyimpenan nalika milih simpul. Fitur anyar katon ing kene.
Nelusuri Kapasitas Panyimpenan
Biasane panjadwal ora ngerti ngendi driver CSI bakal nggawe volume. Uga ora ana cara kanggo panjadwal langsung hubungi driver kanggo njaluk informasi iki. Mulane, panjadwal polling node nganti nemokake volume sing bisa diakses (late binding) utawa ninggalake pilihan lokasi kanggo driver (langsung binding).
anyar APICSIStorageCapacity, sing ana ing tahap alpha, ngidini data sing dibutuhake disimpen ing etcd supaya kasedhiya kanggo panjadwal. Ora kaya dhukungan kanggo volume ephemeral tujuan umum, nalika sampeyan masang driver, sampeyan kudu ngaktifake pelacakan kapasitas panyimpenan: external-provisioner ngirim nerbitaké informasi kapasitas ditampa saka driver liwat normal GetCapacity.
Yen panjadwal kudu milih simpul kanggo polong kanthi volume ora kaiket sing nggunakake ikatan telat, lan pembalap ngaktifake fitur iki sajrone panyebaran kanthi nyetel gendera CSIDriver.storageCapacity, banjur simpul sing ora nduweni kapasitas panyimpenan sing cukup bakal dibuwang kanthi otomatis. Iki bisa digunakake kanggo volume ephemeral lan terus-terusan, nanging ora kanggo volume ephemeral CSI amarga parameter kasebut ora bisa diwaca dening Kubernetes.
Kaya biasane, volume sing disambung langsung digawe sadurunge polong dijadwalake, lan panggonane dipilih dening driver panyimpenan, dadi nalika ngatur external-provisioner Kanthi gawan, kelas panyimpenan kanthi ikatan langsung dilewati, amarga data iki ora bakal digunakake.
Wiwit panjadwal kubernetes dipeksa kanggo bisa karo informasi potensial out-of-tanggal, ana ora njamin sing kapasitas bakal kasedhiya ing saben cilik nalika volume digawe, nanging kemungkinan sing bakal digawe tanpa nyoba maneh, Nanging, tambah.
NB Sampeyan bisa entuk informasi sing luwih rinci, uga kanthi aman "latihan ing cats stand", lan yen ana kahanan sing ora bisa dingerteni, entuk pitulung dhukungan teknis sing berkualitas ing kursus intensif - Pangkalan Kubernetes bakal dianakaké ing 28-30 September, lan kanggo spesialis luwih maju Kubernetes Mega 14–16 Oktober.
Keamanan
CSISstorageCapacity
Obyek CSIStorageCapacity manggon ing namespaces; nalika muter saben driver CSI ing namespace dhewe, disaranake kanggo matesi hak RBAC kanggo CSIStorageCapacity ing papan kasebut amarga wis jelas saka ngendi data kasebut. Kubernetes ora mriksa iki, lan biasane pembalap dilebokake ing ruang jeneng sing padha, saengga pungkasane driver bakal bisa digunakake lan ora nerbitake data sing salah (lan ing kene kertuku gagal, kira-kira. penerjemah adhedhasar guyon janggut)
Volume Ephemeral Tujuan Umum
Yen pangguna duwe hak nggawe pod (langsung utawa ora langsung), dheweke uga bakal bisa nggawe volume ephemeral tujuan umum sanajan ora duwe hak kanggo nggawe panjaluk ing volume kasebut. Iki amarga mriksa ijin RBAC ditrapake kanggo controller sing nggawe PVC, ora kanggo pangguna. Iki minangka owah-owahan utama kanggo nambah menyang akun sampeyan, sadurunge ngaktifake fitur iki ing kluster sing pangguna sing ora dipercaya kudu ora duwe hak nggawe volume.
Conto:
kapisah cabang PMEM-CSI ngemot kabeh owah-owahan sing perlu kanggo mbukak Kubernetes 1.19 cluster nang mesin virtual QEMU karo kabeh fitur ing tataran alpha. Kode driver ora diganti, mung panyebaran sing diganti.
Ing mesin sing cocog (Linux, pangguna normal bisa nggunakake docker, katon kene rincian) printah iki bakal mbukak kluster lan nginstal driver 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
Sawise kabeh bisa digunakake, output bakal ngemot instruksi kanggo nggunakake:
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 -
Objek CSIStorageCapacity ora dimaksudake kanggo diwaca dening manungsa, mula mbutuhake sawetara pangolahan. Filter template Golang bakal nuduhake kelas panyimpenan, conto iki bakal nuduhake jeneng, topologi lan kapasitas:
Ayo coba nggawe aplikasi demo kanthi volume ephemeral tujuan umum. Isi file 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
Sawise nggawe, kaya sing ditampilake ing pandhuan ing ndhuwur, saiki kita duwe pod tambahan lan 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
Yen aplikasi liyane mbutuhake luwih saka 26620Mi, panjadwal ora bakal dianggep pmem-csi-pmem-govm-worker1 ing kabeh keadaan.
Apa sabanjuré?
Loro-lorone fitur isih ing pembangunan. Sawetara aplikasi dibukak sajrone tes alpha. Link proposal perbaikan nyathet karya sing kudu ditindakake kanggo pindhah menyang tahap beta, uga alternatif sing wis dianggep lan ditolak: