
Bagian 1 Kami menyebarkan lingkungan untuk bekerja dengan layanan microser. Bagian 1 menginstal Kubernetes HA pada bare metal (Debian)
Halo, para pembaca Habr!
Dalam posting sebelumnya , saya berbicara tentang cara menggunakan kluster failover Kubernetes. Tetapi faktanya adalah bahwa di Kubernetes nyaman untuk menggunakan aplikasi stateless yang tidak perlu mempertahankan statusnya atau bekerja dengan data. Tetapi dalam kebanyakan kasus, kita perlu menyimpan data dan tidak kehilangannya saat memulai kembali perapian.
Kubernet menggunakan volume untuk tujuan ini. Ketika kami bekerja dengan solusi cloud Kubernetes, tidak ada masalah khusus. Kami hanya perlu memesan volume yang diperlukan dari Google, Amazon atau penyedia cloud lainnya dan, dipandu oleh dokumentasi , menghubungkan volume yang diterima ke pod.
Ketika kita berurusan dengan bare metal, segalanya menjadi sedikit lebih rumit. Hari ini saya ingin berbicara tentang salah satu solusi berdasarkan penggunaan ceph.
Dalam publikasi ini saya akan memberi tahu:
- cara menggunakan penyimpanan yang didistribusikan ceph
- Cara menggunakan Ceph saat bekerja dengan Kubernetes
Pendahuluan
Untuk mulai dengan, saya ingin menjelaskan kepada siapa artikel ini akan berguna. Pertama, untuk pembaca yang menggunakan cluster menurut publikasi pertama saya untuk terus membangun arsitektur layanan-mikro. Kedua, bagi orang-orang yang ingin mencoba menggunakan ceph cluster sendiri dan mengevaluasi kinerjanya.
Dalam publikasi ini, saya tidak akan menyentuh topik perencanaan klaster untuk kebutuhan apa pun, saya hanya akan berbicara tentang prinsip dan konsep umum. Saya tidak akan mempelajari "penyetelan" dan penyetelan dalam, ada banyak publikasi tentang hal ini, termasuk tentang Habr. Artikel ini akan lebih bersifat pengantar, tetapi pada saat yang sama akan memungkinkan Anda untuk mendapatkan solusi yang dapat Anda beradaptasi dengan kebutuhan Anda di masa depan.
- Daftar host, sumber daya host, OS dan versi perangkat lunak
- Struktur Cluster Ceph
- Konfigurasikan node cluster sebelum instalasi
- Instal ceph-deploy
- Membuat cluster ceph
- Pengaturan jaringan
- Instal paket ceph
- Instalasi dan inisialisasi monitor
- Menambahkan OSD
- Hubungkan ceph ke kubernetes
- Membuat kumpulan data
- Menciptakan rahasia klien
- Menyebarkan penyedia rbd ceph
- Membuat kelas penyimpanan
- Tes ligamen Kubernetes + ceph
- Daftar bahan yang digunakan dalam persiapan artikel
Daftar Host dan Persyaratan Sistem
Saat menulis artikel, saya menggunakan mesin virtual dengan konfigurasi ini

Masing-masing memiliki OS 9.5 Debian diinstal. Ini adalah mesin uji, masing-masing dengan dua disk, yang pertama untuk OS, yang kedua untuk OSD Cef
Saya akan menyebarkan cluster melalui utilitas ceph-deploy. Anda dapat menggunakan ceph cluster dalam mode manual, semua langkah dijelaskan dalam dokumentasi, tetapi tujuan artikel ini adalah untuk mengetahui seberapa cepat Anda dapat menggunakan ceph dan mulai menggunakannya di kubernetes.
Ceph cukup rakus untuk sumber daya, terutama RAM. Untuk kecepatan yang baik, disarankan untuk menggunakan drive SSD.
Anda dapat membaca lebih lanjut tentang persyaratan dalam dokumentasi resmi Ceph.
Struktur Cluster Ceph
MON
Monitor adalah daemon yang bertindak sebagai koordinator dari mana cluster dimulai. Segera setelah kami memiliki setidaknya satu monitor yang berfungsi, kami memiliki cluster Ceph. Monitor menyimpan informasi tentang kesehatan dan kondisi cluster dengan menukar berbagai kartu dengan monitor lain. Klien beralih ke monitor untuk mengetahui OSD mana yang akan ditulis / dibaca data. Saat Anda menggunakan penyimpanan baru, hal pertama yang Anda lakukan adalah membuat monitor (atau beberapa). Cluster dapat hidup pada satu monitor, tetapi disarankan untuk membuat 3 atau 5 monitor untuk menghindari jatuhnya seluruh sistem karena jatuhnya satu monitor. Hal utama adalah bahwa jumlah ini harus ganjil untuk menghindari situasi otak-terpisah. Monitor bekerja dalam kuorum, jadi jika lebih dari setengah monitor jatuh, cluster akan diblokir untuk mencegah inkonsistensi data.
Mgr
Daemon Ceph Manager bekerja dengan daemon monitor untuk memberikan kontrol tambahan.
Sejak versi 12.x, daemon ceph-mgr menjadi penting untuk operasi normal.
Jika daemon mgr tidak berjalan, Anda akan melihat peringatan tentang ini.
OSD (Perangkat Penyimpanan Objek)
OSD adalah unit penyimpanan yang menyimpan data itu sendiri dan memproses permintaan klien dengan bertukar data dengan OSD lain. Ini biasanya sebuah disk. Dan biasanya untuk setiap OSD ada daemon OSD terpisah yang dapat berjalan pada mesin mana pun di mana disk ini diinstal.
Ketiga daemon akan bekerja pada setiap mesin di cluster kami. Dengan demikian, monitor dan daemon manajer sebagai daemon layanan dan OSD untuk satu drive mesin virtual kami.
Konfigurasikan node cluster sebelum instalasi
Dokumentasi ceph menentukan alur kerja berikut:

Saya akan bekerja dari node pertama dari ceph01-test cluster, itu akan menjadi Admin Node, itu juga akan berisi file konfigurasi untuk utilitas ceph-deploy. Agar utilitas penyebaran ceph berfungsi dengan benar, semua node cluster harus dapat diakses melalui ssh dengan simpul Admin. Untuk kenyamanan, saya akan menulis nama pendek host untuk cluster
10.73.88.52 ceph01-test 10.73.88.53 ceph02-test 10.73.88.54 ceph03-tset
Dan salin kunci ke host lain. Semua perintah akan saya jalankan dari root.
ssh-copy-id ceph02-test ssh-copy-id ceph03-test
Dokumentasi Pengaturan
ceph-deployInstal ceph-deploy
Langkah pertama adalah menginstal ceph-deploy pada mesin ceph01-test
wget -q -O- 'https://download.ceph.com/keys/release.asc' | apt-key add -
Selanjutnya, Anda harus memilih rilis yang ingin Anda masukkan. Tetapi di sini ada kesulitan, saat ini ceph untuk Debian OS hanya mendukung paket yang bercahaya.
Jika Anda ingin memasang rilis yang lebih baru, Anda harus menggunakan cermin, misalnya
https://mirror.croit.io/debian-mimic/dists/
Tambahkan repositori dengan meniru pada ketiga node
apt install curl apt-transport-https -y curl https://mirror.croit.io/keys/release.gpg > /usr/share/keyrings/croit-signing-key.gpg echo 'deb [signed-by=/usr/share/keyrings/croit-signing-key.gpg] https://mirror.croit.io/debian-mimic/ stretch main' > /etc/apt/sources.list.d/croit-ceph.list apt update apt install ceph-deploy
Jika luminous sudah cukup untuk Anda, maka Anda dapat menggunakan repositori resmi
echo deb https://download.ceph.com/debian-luminous/ $(lsb_release -sc) main | tee /etc/apt/sources.list.d/ceph.list apt-transport-https apt update apt install ceph-deploy
Kami juga menginstal NTP pada ketiga node.
karena rekomendasi ini ada dalam dokumentasi cephKami merekomendasikan menginstal NTP pada node Ceph (terutama pada node Monitor Ceph) untuk mencegah masalah yang timbul dari penyimpangan jam.
apt install ntp
Pastikan Anda mengaktifkan layanan NTP. Pastikan bahwa setiap simpul Ceph menggunakan server NTP yang sama. Anda dapat melihat detail lebih lanjut di sini
Membuat cluster ceph
Buat direktori untuk file config dan file ceph-deploy
mkdir my-cluster cd my-cluster
Mari kita membuat konfigurasi cluster baru, saat membuat, menunjukkan bahwa akan ada tiga monitor di cluster kami
ceph-deploy new ceph01-test ceph02-test ceph03-test
Pengaturan jaringan
Sekarang poin penting, saatnya berbicara tentang jaringan untuk ceph. Ceph menggunakan dua jaringan publik dan sebuah jaringan cluster untuk bekerja

Seperti yang Anda lihat dari diagram jaringan publik, ini adalah level pengguna dan aplikasi, dan jaringan cluster adalah jaringan yang dengannya data direplikasi.
Sangat diinginkan untuk memisahkan kedua jaringan ini dari satu sama lain. Juga, jaringan kluster kecepatan jaringan diinginkan setidaknya 10 Gb.
Tentu saja, Anda dapat menyimpan semuanya di jaringan yang sama. Tapi ini penuh dengan fakta bahwa segera setelah volume replikasi antara OSD meningkat, misalnya, ketika OSD baru (disk) jatuh atau ditambahkan, beban jaringan akan SANGAT meningkat. Jadi kecepatan dan stabilitas infrastruktur Anda akan sangat tergantung pada jaringan yang digunakan oleh ceph.
Sayangnya, kluster virtualisasi saya tidak memiliki jaringan yang terpisah, dan saya akan menggunakan segmen jaringan yang umum.
Konfigurasi jaringan untuk cluster dilakukan melalui file config, yang kami hasilkan dengan perintah sebelumnya.
/my-cluster# cat ceph.conf [global] fsid = 2e0d92b0-e803-475e-9060-0871b63b6e7f mon_initial_members = ceph01-test, ceph02-test, ceph03-test mon_host = 10.73.88.52,10.73.88.53,10.73.88.54 auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx
Seperti yang dapat kita lihat, penyebaran cef tidak membuat pengaturan jaringan default untuk kita, jadi saya akan menambahkan parameter jaringan publik = {jaringan publik / netmask} ke bagian global dari konfigurasi. Jaringan saya adalah 10.73.0.0/16, jadi setelah menambahkan konfigurasi saya akan terlihat seperti ini
[global] fsid = 2e0d92b0-e803-475e-9060-0871b63b6e7f mon_initial_members = ceph01-test, ceph02-test, ceph03-test mon_host = 10.73.88.52,10.73.88.53,10.73.88.54 public network = 10.73.0.0/16 auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx
Jika Anda ingin memisahkan jaringan cluster dari publik, tambahkan parameter cluster network = {cluster-network / netmask}
Anda dapat membaca lebih lanjut tentang jaringan dalam dokumentasi.
Instal paket ceph
Menggunakan ceph-deploy, kami menginstal semua paket ceph yang kami butuhkan pada tiga node kami.
Untuk melakukan ini, pada ceph01-test, jalankan
Jika versi ini meniru maka
ceph-deploy install --release mimic ceph01-test ceph02-test ceph03-test
Jika versinya bercahaya maka
ceph-deploy install --release luminous ceph01-test ceph02-test ceph03-test
Dan tunggu sampai semuanya ditetapkan.
Instalasi dan inisialisasi monitor
Setelah semua paket diinstal, kami akan membuat dan memulai monitor cluster kami.
Uji coba lakukan hal berikut
ceph-deploy mon create-initial
Monitor akan dibuat dalam proses, daemon akan diluncurkan, dan ceph-deploy akan memeriksa kuorum.
Sekarang sebar konfigurasi pada node cluster.
ceph-deploy admin ceph01-test ceph02-test ceph03-test
Dan periksa status cluster kami, jika Anda melakukan semuanya dengan benar, maka statusnya seharusnya
HEALTH_OK
~/my-cluster# ceph status cluster: id: 2e0d92b0-e803-475e-9060-0871b63b6e7f health: HEALTH_OK services: mon: 3 daemons, quorum ceph01-test,ceph02-test,ceph03-test mgr: no daemons active osd: 0 osds: 0 up, 0 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 0 B used, 0 B / 0 B avail pgs:
Buat mgr
ceph-deploy mgr create ceph01-test ceph02-test ceph03-test
Dan periksa kembali statusnya
ceph -s
Sebuah garis akan muncul
mgr: ceph01-test(active), standbys: ceph02-test, ceph03-test
Kami menulis konfigurasi untuk semua host di kluster
ceph-deploy admin ceph01-test ceph02-test ceph03-test
Menambahkan OSD
Saat ini kami memiliki cluster yang berfungsi, tetapi belum memiliki disk (osd dalam terminologi ceph) untuk menyimpan informasi.
OSD dapat ditambahkan dengan perintah berikut (tampilan umum)
ceph-deploy osd create --data {device} {ceph-node}
Dalam testbed saya, disk / dev / sdb dialokasikan di bawah osd, jadi dalam kasus saya perintahnya adalah sebagai berikut
ceph-deploy osd create --data /dev/sdb ceph01-test ceph-deploy osd create --data /dev/sdb ceph02-test ceph-deploy osd create --data /dev/sdb ceph03-test
Periksa apakah semua OSD berfungsi.
ceph -s
Kesimpulan
cluster: id: 2e0d92b0-e803-475e-9060-0871b63b6e7f health: HEALTH_OK services: mon: 3 daemons, quorum ceph01-test,ceph02-test,ceph03-test mgr: ceph01-test(active) osd: 3 osds: 3 up, 3 in
Anda juga dapat mencoba beberapa perintah yang berguna untuk OSD.
ceph osd df ID CLASS WEIGHT REWEIGHT SIZE USE AVAIL %USE VAR PGS 0 hdd 0.00490 1.00000 5.0 GiB 1.0 GiB 4.0 GiB 20.05 1.00 0 1 hdd 0.00490 1.00000 5.0 GiB 1.0 GiB 4.0 GiB 20.05 1.00 0 2 hdd 0.00490 1.00000 5.0 GiB 1.0 GiB 4.0 GiB 20.05 1.00 0 TOTAL 15 GiB 3.0 GiB 12 GiB 20.05
dan
ceph osd tree ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 0.01469 root default -3 0.00490 host ceph01-test 0 hdd 0.00490 osd.0 up 1.00000 1.00000 -5 0.00490 host ceph02-test 1 hdd 0.00490 osd.1 up 1.00000 1.00000 -7 0.00490 host ceph03-test 2 hdd 0.00490 osd.2 up 1.00000 1.00000
Jika semuanya OK, maka kami memiliki ceph cluster yang berfungsi. Pada bagian selanjutnya saya akan memberi tahu cara menggunakan ceph dengan kubernetes
Hubungkan ceph ke kubernetes
Sayangnya, saya tidak akan dapat menjelaskan secara terperinci operasi volume Kubernetes dalam artikel ini, jadi saya akan mencoba mencocokkannya menjadi satu paragraf.
Kubernetes menggunakan kelas penyimpanan untuk bekerja dengan volume data data, setiap kelas penyimpanan memiliki penyedia sendiri, Anda dapat menganggapnya sebagai semacam "driver" untuk bekerja dengan volume penyimpanan data yang berbeda. Daftar lengkap yang mendukung kubernetes dapat ditemukan di dokumentasi resmi .
Kubernetes sendiri juga memiliki dukungan untuk bekerja dengan rbd, tetapi tidak ada klien rbd yang diinstal pada gambar kube-controller-manager resmi, jadi Anda perlu menggunakan gambar yang berbeda.
Perlu juga dicatat bahwa volume (pvc) yang dibuat sebagai rbd hanya dapat ReadWriteOnce (RWO) dan, yang berarti Anda dapat memasang volume yang dibuat HANYA ke satu perapian.
Agar cluster kami dapat bekerja dengan volume ceph, kita perlu:
dalam cluster Ceph:
- buat kumpulan data dalam ceph cluster
- buat klien dan kunci akses ke kumpulan data
- dapatkan rahasia admin ceph
Agar cluster kami dapat bekerja dengan volume ceph, kita perlu:
dalam cluster Ceph:
- buat kumpulan data dalam ceph cluster
- buat klien dan kunci akses ke kumpulan data
- dapatkan rahasia admin ceph
di kluster Kubernetes:
- buat rahasia admin ceph dan kunci klien ceph
- instal ceph rbd provisioner atau ubah gambar kube-controller-manager menjadi gambar yang mendukung rbd
- buat rahasia dengan kunci klien ceph
- buat kelas penyimpanan
- instal ceph-common pada catatan pekerja kubernetes
Membuat kumpulan data
Di ceph cluster, buat kumpulan untuk volume kubernetes
ceph osd pool create kube 8 8
Di sini saya akan membuat penjelasan kecil, angka 8 8 pada akhirnya adalah angka pg dan pgs. Nilai-nilai ini tergantung pada ukuran cluster ceph Anda. Ada kalkulator khusus yang menghitung jumlah pg dan pg, misalnya, resmi dari ceph
Untuk memulai, saya sarankan untuk membiarkannya secara default, jika di masa depan jumlah ini dapat ditingkatkan (hanya dapat dikurangi dengan versi Nautilus).
Membuat klien untuk kumpulan data
Buat klien untuk kumpulan baru
ceph auth add client.kube mon 'allow r' osd 'allow rwx pool=kube'
Kami akan menerima kunci untuk klien, di masa depan kami akan membutuhkannya untuk membuat kubernet rahasia
ceph auth get-key client.kube AQDd5aldka5KJRAAkpWTQYUMQi+5dfGDqSyxkg==
Mendapatkan kunci admin
Dan dapatkan kunci admin
ceph auth get client.admin 2>&1 |grep "key = " |awk '{print $3'} AQAv+Itdx4DwKBAAKVhWRS3+eEPqV3Xrnlg9KA==
Pada ceph cluster, semua pekerjaan selesai dan sekarang kita harus pergi ke mesin yang memiliki akses ke cluster kubernetes
Saya akan bekerja dengan uji master01 (10.73.71.25) dari gugus yang digunakan oleh saya dalam publikasi pertama.
Menciptakan rahasia klien
Buat file dengan token klien yang kami terima (jangan lupa ganti dengan token Anda)
echo AQDd5aldka5KJRAAkpWTQYUMQi+5dfGDqSyxkg== > /tmp/key.client
Dan buat rahasia yang akan kita gunakan di masa depan
kubectl create secret generic ceph-secret --from-file=/tmp/key.client --namespace=kube-system --type=kubernetes.io/rbd
Buat rahasia admin
Buat file dengan token admin (jangan lupa ganti dengan token Anda)
echo AQAv+Itdx4DwKBAAKVhWRS3+eEPqV3Xrnlg9KA== > /tmp/key.admin
Setelah itu buat rahasia admin
kubectl create secret generic ceph-admin-secret --from-file=/tmp/key.admin --namespace=kube-system --type=kubernetes.io/rbd
Periksa apakah rahasia telah dibuat
kubectl get secret -n kube-system | grep ceph ceph-admin-secret kubernetes.io/rbd 1 8m31s ceph-secret kubernetes.io/rbd 1 7m32s
Metode pertama menggunakan Ceph rbd provisioner
Kami mengkloning repositori kubernetes-incubator / external-storage dari github, ia memiliki semua yang Anda butuhkan untuk membuat teman-teman cluster kubernetes dengan repositori ceph.
git clone https://github.com/kubernetes-incubator/external-storage.git cd external-storage/ceph/rbd/deploy/ NAMESPACE=kube-system sed -r -i "s/namespace: [^ ]+/namespace: $NAMESPACE/g" ./rbac/clusterrolebinding.yaml ./rbac/rolebinding.yaml
kubectl -n $NAMESPACE apply -f ./rbac
Kesimpulan
clusterrole.rbac.authorization.k8s.io/rbd-provisioner created clusterrolebinding.rbac.authorization.k8s.io/rbd-provisioner created deployment.extensions/rbd-provisioner created role.rbac.authorization.k8s.io/rbd-provisioner created rolebinding.rbac.authorization.k8s.io/rbd-provisioner created serviceaccount/rbd-provisioner created
Metode dua: Ganti gambar kube-controller-manager
Tidak ada dukungan rbd di gambar kube-controller-manager resmi, jadi kita perlu mengubah gambar controller-manager.
Untuk melakukan ini, pada setiap penyihir Kubernetes, Anda perlu mengedit file kube-controller-manager.yaml dan mengganti gambar dengan gcr.io/google_containers/hyperkube:v1.15.2. Perhatikan versi gambar yang harus cocok dengan versi cluster Kubernetes Anda.
vim /etc/kubernetes/manifests/kube-controller-manager.yaml
Setelah itu, Anda perlu me-restart kube-controller-manager
ubectl get pods -A | grep manager kube-system kube-controller-manager-master01-test 1/1 Running 0 5m54s kube-system kube-controller-manager-master02-test 1/1 Running 0 5m54s kube-system kube-controller-manager-master03-test 1/1 Running 9111 103d
Pod harus diperbarui secara otomatis, tetapi jika karena alasan ini tidak terjadi, Anda dapat membuatnya kembali secara manual, melalui penghapusan.
kubectl delete pod -n kube-system kube-controller-manager-master01-test kubectl delete pod -n kube-system kube-controller-manager-master02-test kubectl delete pod -n kube-system kube-controller-manager-master03-test
Periksa apakah semuanya baik-baik saja
kubectl describe pod -n kube-system kube-controller-manager-master02-test | grep Image: Image: gcr.io/google_containers/hyperkube:v1.15.2
-
Membuat kelas penyimpanan
Metode satu - jika Anda menggunakan pemberi ketentuan ceph.com/rbd
Buat file yaml dengan deskripsi kelas penyimpanan kami. Juga, semua file yang digunakan di bawah ini dapat diunduh di repositori saya di direktori ceph
cat <<EOF >./storage-class.yaml kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: ceph-rbd provisioner: ceph.com/rbd parameters: monitors: 10.73.88.52:6789, 10.73.88.53:6789, 10.73.88.54:6789 pool: kube adminId: admin adminSecretNamespace: kube-system adminSecretName: ceph-admin-secret userId: kube userSecretNamespace: kube-system userSecretName: ceph-secret imageFormat: "2" imageFeatures: layering EOF
Dan menanamkannya di cluster kami
kubectl apply -f storage-class.yaml
Periksa apakah semuanya baik-baik saja
kubectl get sc NAME PROVISIONER AGE ceph-rbd ceph.com/rbd 7s
Metode dua - jika Anda menggunakan kubernetes.io/rbd
Buat kelas penyimpanan
cat <<EOF >./storage-class-hyperkube.yaml kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: ceph-rbd provisioner: kubernetes.io/rbd allowVolumeExpansion: true parameters: monitors: 10.73.88.52:6789, 10.73.88.53:6789, 10.73.88.54:6789 pool: kube adminId: admin adminSecretNamespace: kube-system adminSecretName: ceph-admin-secret userId: kube userSecretNamespace: kube-system userSecretName: ceph-secret imageFormat: "2" imageFeatures: layering EOF
Dan menanamkannya di cluster kami
kubectl apply -f storage-class-hyperkube.yaml storageclass.storage.k8s.io/ceph-rbd created
Periksa apakah semuanya baik-baik saja
kubectl get sc NAME PROVISIONER AGE ceph-rbd kubernetes.io/rbd 107s
Tes ligamen Kubernetes + ceph
Sebelum menguji ceph + kubernetes, Anda harus menginstal paket ceph-common pada SETIAP workcode cluster.
apt install curl apt-transport-https -y curl https://mirror.croit.io/keys/release.gpg > /usr/share/keyrings/croit-signing-key.gpg echo 'deb [signed-by=/usr/share/keyrings/croit-signing-key.gpg] https://mirror.croit.io/debian-mimic/ stretch main' > /etc/apt/sources.list.d/croit-ceph.list apt update apt install ceph-common
Buat file yaml, PersistentVolumeClaim
cat <<EOF >./claim.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata: name: claim1 spec: accessModes: - ReadWriteOnce storageClassName: ceph-rbd resources: requests: storage: 1Gi EOF
Bunuh dia
kubectl apply -f claim.yaml
Periksa apakah PersistentVolumeClaim dibuat.
bectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE claim1 Bound pvc-d1e47825-289c-4201-acb8-033e62a3fe81 1Gi RWO ceph-rbd 44m
Dan juga secara otomatis membuat PersistentVolume.
kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-d1e47825-289c-4201-acb8-033e62a3fe81 1Gi RWO Delete Bound default/claim1 ceph-rbd 37m
Mari kita buat satu test pod di mana kita memasukkan pvc yang dibuat di direktori / mnt. Jalankan file ini /mnt/test.txt dengan teks "Hello World!"
cat <<EOF >./create-file-pod.yaml kind: Pod apiVersion: v1 metadata: name: create-file-pod spec: containers: - name: test-pod image: gcr.io/google_containers/busybox:1.24 command: - "/bin/sh" args: - "-c" - "echo Hello world! > /mnt/test.txt && exit 0 || exit 1" volumeMounts: - name: pvc mountPath: "/mnt" restartPolicy: "Never" volumes: - name: pvc persistentVolumeClaim: claimName: claim1 EOF
Kami akan membunuhnya dan memverifikasi bahwa ia telah menyelesaikan tugasnya
kubectl apply -f create-file-pod.yaml kubectl get pods -w
Mari kita tunggu statusnya
create-file-pod 0/1 Completed 0 16s
Mari kita buat yang lain, hubungkan volume kita ke sana tetapi sudah di / mnt / test, dan setelah itu pastikan bahwa file yang dibuat oleh volume pertama sudah ada.
cat <<EOF >./test-pod.yaml kind: Pod apiVersion: v1 metadata: name: test-pod spec: containers: - name: test-pod image: gcr.io/google_containers/busybox:1.24 command: - "/bin/sh" args: - "-c" - "sleep 600" volumeMounts: - name: pvc mountPath: "/mnt/test" restartPolicy: "Never" volumes: - name: pvc persistentVolumeClaim: claimName: claim1 EOF
Jalankan kubectl dapatkan po -w dan tunggu sampai pod berjalan
Setelah itu, mari kita masuki dan periksa apakah volumenya terkoneksi dan file kita di direktori / mnt / test
kubectl exec test-pod -ti sh cat /mnt/test/test.txt Helo world!
Terima kasih sudah membaca sampai akhir. Maaf atas keterlambatan posting.
Saya siap menjawab semua pertanyaan dalam pesan pribadi atau di jejaring sosial yang ditunjukkan pada profil saya.
Dalam publikasi kecil berikutnya saya akan memberi tahu Anda cara menggunakan penyimpanan S3 berdasarkan ceph cluster yang dibuat, dan kemudian sesuai dengan rencana dari publikasi pertama.
Bahan yang digunakan untuk publikasi