GNU/Linux >> Belajar Linux >  >> Linux

Menemukan blok dan file konten aplikasi OCP di ODF:Membuat proyek

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.


Linux
  1. Menemukan blok dan file konten aplikasi OCP di ODF:Infrastruktur

  2. Perbedaan Antara Tautan Simbolik dan Tautan Keras?

  3. Pengalihan Io Dan Perintah Kepala?

  1. Metode Paling Efisien Untuk Mengosongkan Isi File?

  2. Bagaimana Menemukan Jenis File Img Dan Memasangnya?

  3. Menemukan kata terpanjang dalam file teks

  1. Perbedaan Antara .exrc Dan .vimrc?

  2. lsinitramfs:Mencantumkan isi sistem file initrd.

  3. peringatan libpng:Versi libpng tidak kompatibel dalam aplikasi dan pustaka