Seperti yang tercakup dalam bagian pertama dari seri artikel ini, mungkin sulit untuk memetakan lokasi objek aplikasi di cluster OpenShift Data Foundation (ODF). Tujuan saya adalah membuat proses ini lebih mudah bagi Anda dengan mendemonstrasikan cara membuat wadah pemecahan masalah dan kemudian cara menggunakannya untuk pemetaan penyimpanan blok dan file.
Pastikan untuk membaca bagian pertama untuk memahami lingkungan dan toolkit yang diperlukan. Saatnya untuk memulai dengan membuat proyek demonstrasi.
Buat proyek
Selanjutnya, buat dua aplikasi pengujian sederhana, satu yang menggunakan blok SC dan yang lainnya menggunakan file SC, untuk melakukan tugas pemetaan tempat data aplikasi ini disimpan di cluster ODF.
Pertama, buat proyek bernama ocs-block-app untuk meng-host aplikasi:
[alexon@bastion ~]$ oc proyek baru ocs-block-appSekarang menggunakan proyek "ocs-block-app" di server "https://api.example.com:6443".
Anda dapat menambahkan aplikasi ke proyek ini dengan new-app
memerintah. Misalnya, untuk membuat aplikasi contoh baru di Ruby, coba:
oc new-app rails-postgresql-example
Atau gunakan kubectl
untuk menerapkan aplikasi Kubernetes sederhana:
kubectl membuat penerapan hello-node --image=k8s.gcr.io/serve_hostname
Kemudian, gunakan salah satu template yang disediakan oleh OCP yang menggunakan blok. Sebaiknya gunakan templat rails-pgsql-persistent :
[alexon@bastion ~]$ oc get templates -n openshift -o custom-columns=NAME:.metadata.name | grep ^rel | head -1rails-pgsql-persistent
Dalam parameter yang tersedia di template, mungkin untuk melihat bahwa ukuran permintaan volume dapat disesuaikan:
[alexon@bastion ~]$ proses oc --parameters -n openshift rails-pgsql-persistent | grep -i volumeVOLUME_CAPACITY Ruang volume tersedia untuk data, mis. 512Mi, 2Gi 1Gi
Jalankan aplikasi baru ini dan sesuaikan ukuran permintaan volume menjadi 5 GB:
[alexon@bastion ~]$ oc new-app rails-pgsql-persistent -p VOLUME_CAPACITY=5Gi--> Menerapkan template "openshift/rails-pgsql-persistent" untuk memproyeksikan ocs-block-app Rails + PostgreSQL --------- Contoh aplikasi Rails dengan database PostgreSQL. Untuk informasi lebih lanjut tentang menggunakan template ini, termasuk pertimbangan OpenShift, lihat https://github.com/sclorg/rails-ex/blob/master/README.md. Layanan berikut telah dibuat di proyek Anda:rails-pgsql-persistent, postgresql. Untuk informasi lebih lanjut tentang menggunakan template ini, termasuk pertimbangan OpenShift, lihat https://github.com/sclorg/rails-ex/blob/master/README.md. * Dengan parameter: * Name=rails-pgsql-persistent * Namespace=openshift * Memory Limit=512Mi * Memory Limit (PostgreSQL)=512Mi * Volume Capacity=5Gi clopository/ URL=https:// Git Regithub -ex.git * Git Referensi =* Context Directory =* Aplikasi Hostname =* GitHub WebHook rahasia =ahNYBvvbrEFhRjFEX28XdXn04CvMgkbQuABBKruJ # dihasilkan * Kunci rahasia =m2aq81igaa74gh1shh8vawcywvsxjqjqubywwkcadymj0b1va0krkgsog000ksdusf7h6gyyhoxyh6dcfhw2swsen85o8sq43vod1hvlbtvu7n6x14sn7k4vcs0uwxr # dihasilkan * Aplikasi Username =openshift * Aplikasi password =rahasia * Rails Lingkungan =produksi * database Name Service =postgresql * Database Username=userWXH # generate * Database Password=pOxlVrav # generate * Database Name=root * Maximum Database Connections=100 * Shared Buffer Amount=12MB * Custom Ruby-> Creating Mirror URL rahasia "rails-pgsql-persistent" dibuat layanan "rails-pgsql-persistent" dibuat route.route.openshift.io "rails-pgsql-persistent" dibuat imagestream.image.openshift.io "rails-pgsql-persistent" dibuat buildconfig. build.openshift.io "rails-pgsql-persistent" dibuat deploymentconfig.apps.openshift.io "rails-pgsql-persistent" dibuat persistentvolumeclaim "postgresql" dibuat layanan "postgresql" dibuat deploymentconfig.apps.openshift.io "postgresql" dibuat- -> Berhasil Akses aplikasi Anda melalui route 'rails-pgsql-persistent-ocs-block-app.apps.example.com' Pembuatan terjadwal, gunakan 'oc logs -f buildconfig/rails-pgsql-persistent' untuk melacak kemajuannya. Jalankan 'oc status' untuk melihat aplikasi Anda.
Setelah beberapa saat, verifikasi bahwa aplikasi berfungsi:
[alexon@bastion ~]$ oc statusIn project ocs-block-app di server https://api.example.com:6443svc/postgresql - 172.30.176.29:5432 dc/postgresql menerapkan openshift/postgresql:12-el8 penerapan #1 diterapkan 4 menit yang lalu - 1 podhttp://rails-pgsql-persistent-ocs-block-app.apps.example.com (svc/rails-pgsql-persistent) dc/rails-pgsql-persistent penerapan istag/rails-pgsql-persistent:latest <- bc/rails-pgsql-persistent source build https://github.com/sclorg/rails-ex.git pada openshift/ruby:2.6-ubi8 deployment #1 diterapkan 3 menit yang lalu - 1 detail podView dengan 'oc explain /' atau daftar resource dengan 'oc get all'.[alexon@bastion ~]$ oc get podsNAME READY STATUS RESTARTS AGEpostgresql-1-deploy 0/1 Selesai 0 4m49spostgresql -1-k6t47 1/1 Berjalan 0 4m46srails-pgsql-persistent-1-build 0/1 Selesai 0 4m50srails-pgsql-persistent-1-deploy 0/1 Selesai 0 3m9srails-pgsql-persistent-1-dgfkq 1/1 0 2m57srails-pgsql-persistent-1-hook-pre 0/1 Compl makan 0 3m6s
Periksa PVC yang dibuat oleh aplikasi yang menggunakan blok ODF SC, yang dalam hal ini adalah Ceph RBD:
[Alexon@Bastion ~] $ oc dapatkan PVCName Status Volume Kapasitas Mode Akses StorageClass Agepostgresql Bound PVC-371FAEC8-2017-43B4-8416-7003A0D539A9 5GI RWO OCS-STORAGEC-PERCA
Dalam spesifikasi PV yang digunakan oleh PVC, di dalam bidang CSI, ada atribut yang menyediakan nama gambar yang dibuat untuk aplikasi di dalam kumpulan blok Ceph. Anda dapat mengekstrak nama dari gambar ini sebagai berikut:
[alexon@bastion ~]$ oc get pv pvc-371faec8-2017-43b4-8416-7003a0d539a9 -o jsonpath="{.spec.csi.volumeAttributes.imageName}{'\n'}"csi -vol-24624906-bccb-11eb-9cab-0a580a81023f
Dengan nama gambar di tangan, akses kembali kotak alat dan daftar kumpulan yang ada:
[alexon@bastion ~]$ oc rsh -n openshift-storage $toolboxsh-4.4$ ceph dfRAW STORAGE: CLASS SIZE AVAIL USED RAW USED %RAW USED ssd 1.5 TiB 1.3 TiB 252 TO. TIB 1.3 TIB 252 GIB 255 GIB 16.63 Kolam:ID kumpulan yang disimpan objek digunakan%Digunakan Max Tersedia OCS-STORAGECLUSTER-CEPHBLOCKPOOL 1 84 GIB 22.39K 252 GIB 19.37 350 GIB OCS-STORAGECLUSTER-CEPHFILESTEMSYSTEMSETEMSETEMA 2 1.4 MIB 2,4 MIB 2550 GIB 0 350 GIBFILESTEMSYSTEMSETEMA-METADATA 2 1.4 MIB 2,4 MIB 2,4 MIB 2,4 MIB 2,4 MIB 2BFILESTEMSYSTEMA 2,4 1,4 1,4 MIB2,2,2 ocs-storagecluster-cephfilesystem-data0 3 0 B 0 0 B 0 350 GiB
Ingat bahwa saya menyebutkan bahwa ocs-storagecluster-cephblockpool kolam digunakan untuk balok? Lihat apakah Anda dapat menemukan gambar Anda di dalam:
sh-4.4$ rados -p ocs-storagecluster-cephblockpool ls | grep csi-vol-24624906-bccb-11eb-9cab-0a580a81023frbd_id.csi-vol-24624906-bccb-11eb-9cab-0a580a81023f
Ada gambar Anda. Tampilkan beberapa informasi lebih lanjut tentangnya:
sh-4.4$ rbd -p ocs-storagecluster-cephblockpool info csi-vol-24624906-bccb-11eb-9cab-0a580a81023frbd gambar 'csi-vol-24624906-bccb-11eb-9cab-0a580a81023f': 5 GIB dalam 1280 Objek Pesanan 22 (4 MIB Objects) Snapshot_count:0 ID:926554E4ABA49 block_name_prefix:rbd_data.926554e4Aba49 Format:2 Fitur:Layering Op_Features:Flags:Create_Timestamp:Mon May:Mon May:2 2021:Layering OP_FEATURES:Bendera:Create_Timestamp:Mon May:Mon May:2 2021:Layering:Layering:Flags:Create_Timestamp:Mon May:Mon May:Mon Mei:Mon. :03:43 2021 modify_timestamp:Sen 24 Mei 20:03:43 2021
Lihat bahwa ia memiliki ukuran yang sama yang ditentukan sebelumnya untuk pembuatan PVC. Dan apa yang terjadi jika Anda meningkatkan kapasitas PVC? Tingkatkan dari 5GB menjadi 10GB:
[Alexon@Bastion ~] $ oc dapatkan PVCName Status Volume Mode Kapasitas Akses StorageClass Agepostgresql Bound PVC-371FAEC8-2017-43B4-8416-7003A0D539A9 5GI RWO OCS-STORAGEC-PECHECLUSTER-PECHECLUSTER-PECHECLUSTER-PECHECLUSTER-PECHECLUSTER-PECHECLUSTER-PECHECLUSTER-PECHECLUSTER-PECHECLUSTER-PECHECLUEST ]$ oc patch pvc postgresql -n ocs-block-app --type json --patch '[{ "op":"replace", "path":"/spec/resources/requests/storage", "value":"10gi"}] 'PersistentVolumeclaim/PostgreSQL ditambal [Alexon@bastion ~] $ oc dapatkan pvcname Status Mode Kapasitas Kapasitas Mode Akses StorageClass AgepostgreSQL Bound PVC-371FAEC8-2017-43B4-8416-7003A0D539-2017-43B4-8416-7003A0D539-2017-43B4-8416-7003A0D539D539-2017-43B4-8416-7003A0D539 /kode>
Akses pod kotak alat lagi. Ukuran gambar juga telah dimodifikasi, mencerminkan ukuran PVC:
[alexon@bastion ~]$ oc rsh -n openshift-storage $toolboxsh-4.4$ ceph dfRAW PENYIMPANAN: UKURAN KELAS TERSEDIA DIGUNAKAN MENTAH DIGUNAKAN %RAW DIGUNAKAN ssd 1,5 TiB 1.3 TiB 253 GiB 253 TOTAL 1,5 TiB 253 TiB 1.3 TiB 253 GiB 256 GiB 16.64 POOLS: ID POOL TERSIMPAN OBJEK YANG DIGUNAKAN %USED MAX AVAIL ocs-storagecluster-cephblockpool 1 84 GiB 22.41k 253 GiB 19.39 filesystem _ GiB 1.4502 GiB-1.4 file 3502 GiB . ocs-storagecluster-cephfilesystem-data0 3 0 B 0 0 B 0 350 GiB sh-4.4$ rbd -p ocs-storagecluster-cephblockpool info csi-vol-24624906-bccb-11eb-9cab-0a580a81023frbd image 'csi-vol-24624906 BCCB-11EB-9CAB-0A580A81023F ':Ukuran 10 GIB dalam 2560 Objects Order 22 (4 MIB Objects) Snapshot_count:0 ID:926554E4ABA49 Block_name_prefix:rbd_data.926554eBa49 4 20:03:43 2021 access_timestamp:Sen 24 Mei 20:03:43 2021 modify_timestamp:Sen 24 Mei 20:03:43 2021
Bagaimana jika Anda ingin tahu di perangkat dan host mana gambar dipetakan? Klien Ceph mengambil peta cluster terbaru. Algoritme CRUSH menghitung cara memetakan objek ke grup penempatan, lalu menghitung cara menetapkan grup penempatan ke OSD secara dinamis. Untuk menemukan lokasi objek, yang Anda butuhkan hanyalah nama objek dan nama kumpulan:
sh-4.4$ ceph osd map ocs-storagecluster-cephblockpool csi-vol-24624906-bccb-11eb-9cab-0a580a81023fosdmap e405 pool 'ocs-storagecluster-cephblockpool' (1) objek 'csi-vol-24624906 -bccb-11eb-9cab-0a580a81023f' -> hal 1.ecb58a2b (1.b) -> naik ([1,0,2], p1) akting ([1,0,2], p1)
Sekarang saya tahu bahwa objek saya berada di PG yang memiliki OSD ID 1 sebagai perangkat utamanya, serta replika di OSD ID 0 dan 2. Di node mana daemon OSD 1 di cluster saya? Lihat di bawah:
sh-4.4$ ceph osd status+----+------------------------------+- ------+-------+--------+---------+--------+------- --+-----------+| id | tuan rumah | bekas | berhasil | operasi wr | data wr | operasi ke-rd | data pertama | negara |+----+------------------------------+-------+--- ----+--------+--------+--------+---------+------- ----+| 0 | ip-10-0-171-63.ec2.internal | 86.7G | 425G | 50 | 517rb | 0 | 0 | ada,naik || 1 | ip-10-0-143-192.ec2.internal | 86.7G | 425G | 109 | 1224k | 0 | 0 | ada,naik || 2 | ip-10-0-154-20.ec2.internal | 86.7G | 425G | 78 | 1048rb | 2 | 106 | ada,atas |+----+------------------------------+-------+- ------+--------+---------+--------+---------+----- ------+
Anda dapat melihat di atas bahwa itu berada di node ip-10-0-143-192.ec2.internal . Dan perangkat mana yang digunakan pada node itu? Lihat di bawah:
SH-4.4 $ CEPH OSD TREEID Kelas Jenis Berat Nama Status REWEIGHT KEBERIKIAN -1 1.50000 Root Default -5 1.50000 Wilayah US-EAST-1 -4 0.50000 ZONE US-EAST-1A -3 0.50000 HOST OCS -deviceset-gp2-csi-1-data-085b8h 1 SSD 0,50000 OSD.1 UP 1.00000 1.00000 -10 0.50000 ZONE US-EAST-1B -9 0.50000 Host OCS-Deviceset-GP2-CSI-2-DATA-0N9LKB 2 SSD 0.50000 OSD.2 UP 1.00000 1.00000 -14 0.50000 ZONE US-EAST-1C -13 0.50000 Host OCS-Deviceset-GP2-CSI-0-DATA-0GVT22 0 SSD 0.50000 OSD.0 UP 1.00000 1.00000
Sekarang saya tahu node dan perangkat mana (host ocs-deviceset-gp2-csi-1-data-085b8h ) gambar saya aktif. Tapi saya masih tidak tahu jalur apa di dalam simpul itu. Untuk ini, Anda akan melihat atribut lain dari PV yang akan memberi Anda informasi ini:
[alexon@bastion ~]$ oc get pv pvc-371faec8-2017-43b4-8416-7003a0d539a9 -o jsonpath="{.spec.csi.volumeHandle}{'\n'}"0001-0011 -openshift-storage-0000000000000001-24624906-bccb-11eb-9cab-0a580a81023f
Jadi, dengan informasi nama node, perangkat, dan pegangan volume, akses node dan dapatkan gambar Anda. Anda dapat melakukannya dengan mengambil nama gambar pada titik pemasangan node saat ini atau nama pegangan volume:
[alexon@bastion ~]$ oc debug node/ip-10-0-143-192.ec2.internalMemulai pod/ip-10-0-143-192ec2internal-debug ...Untuk menggunakan binari host , jalankan `chroot /host`Pod IP:10.0.143.192Jika Anda tidak melihat prompt perintah, coba tekan enter.sh-4.4# mount | grep 24624906-bccb-11eb-9cab-0a580a81023f/dev/rbd2 di /host/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-371faec8-2017-43b4-8416-7003a0d539a9/globalmount/0001- 0011-openshift-storage-0000000000000001-24624906-bccb-11eb-9cab-0a580a81023f tipe ext4 (rw,relatime,seclabel,stripe=16)
Anda dapat melihat bahwa gambar dipasang pada jalur berikut dengan sistem file EXT4 oleh perangkat/dev/rbd2
:
/host/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-371faec8-2017-43b4-8416-7003a0d539a9/globalmount/0001-0011-openshift-storage-0000000000000001-24624906 -bccb-11eb-9cab-0a580a81023f
Lihat isi direktori ini:
sh-4.4# ls /host/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-371faec8-2017-43b4-8416-7003a0d539a9/globalmount/0001-0011-openshift- storage-000000000000001-24624906-bccb-11eb-9cab-0a580a81023flost+ditemukan userdatash-4.4# ls /host/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-371faec8-2017-43b4-8416-7003a0d539a9 postconf .pidcurrent_logfiles pg_commit_ts pg_ident.conf pg_notify pg_snapshots pg_subtrans pg_wal postgresql.conf
Dan seperti yang Anda lihat di atas, ini adalah isi dari database Anda dari aplikasi blok yang Anda buat.
[ Pelajari dasar-dasar penggunaan Kubernetes di lembar contekan gratis ini. ]
Menutup
Di awal artikel ini (bagian dua dalam seri), Anda membuat proyek demonstrasi untuk dikerjakan. Anda juga melihat pemetaan aplikasi blok dalam cluster ODF dengan menggunakan kotak alat Rook dan perintah OpenShift.
Pastikan untuk membaca bagian ketiga, karena berisi pemetaan tambahan dan ide pemecahan masalah yang berpusat di sekitar penyimpanan dan pemetaan file.
Menemukan konten aplikasi OCP blok dan file di ODF:Membuat proyek penyimpanan file
5 hal yang saya harap saya ketahui sebelum menjadi sysadmin
Linux