Jak je popsáno v první části této série článků, může být obtížné mapovat umístění objektů aplikace v clusterech OpenShift Data Foundation (ODF). Mým cílem je usnadnit vám tento proces tím, že vám ukážu, jak vytvořit kontejner pro odstraňování problémů a jak jej používat pro mapování blokového i souborového úložiště.
Nejprve si přečtěte první část, abyste porozuměli prostředí a potřebné sadě nástrojů. Je čas začít vytvořením ukázkového projektu.
Vytvořte projekt
Dále vytvořte dvě jednoduché testovací aplikace, jednu, která používá blok SC a druhou, která používá soubor SC, k provádění úkolů mapování, kde jsou data těchto aplikací uložena v clusteru ODF.
Nejprve vytvořte projekt s názvem ocs-block-app k hostování aplikace:
[alexon@bastion ~]$ oc nový-projekt ocs-block-appNyní pomocí projektu "ocs-block-app" na serveru "https://api.example.com:6443".
Do tohoto projektu můžete přidat aplikace pomocí new-app
příkaz. Chcete-li například vytvořit novou ukázkovou aplikaci v Ruby, zkuste:
oc new-app rails-postgresql-example
Nebo použijte kubectl
k nasazení jednoduché aplikace Kubernetes:
kubectl vytvořit nasazení hello-node --image=k8s.gcr.io/serve_hostname
Poté použijte jednu ze šablon dostupných od OCP, která využívá blok. Je dobré použít šablonu rails-pgsql-persistent :
[alexon@bastion ~]$ oc získat šablony -n openshift -o custom-columns=NAME:.metadata.name | grep ^kolejnice | head -1rails-pgsql-persistent
V parametrech dostupných v šabloně je možné vidět, že velikost požadavku na objem je přizpůsobitelná:
[alexon@bastion ~]$ proces oc --parameters -n openshift rails-pgsql-persistent | grep -i objem VOLUME_CAPACITY Objemový prostor dostupný pro data, např. 512Mi, 2Gi 1Gi
Spusťte tuto novou aplikaci a upravte velikost požadavku na svazek na 5 GB:
[alexon@bastion ~]$ oc new-app rails-pgsql-persistent -p VOLUME_CAPACITY=5Gi--> Nasazení šablony „openshift/rails-pgsql-persistent“ pro projekt ocs-block-app Rails + PostgreSQL --------- Příklad aplikace Rails s databází PostgreSQL. Další informace o použití této šablony, včetně úvah o OpenShift, najdete na https://github.com/sclorg/rails-ex/blob/master/README.md. Ve vašem projektu byly vytvořeny následující služby:rails-pgsql-persistent, postgresql. Další informace o použití této šablony, včetně úvah o OpenShift, najdete na https://github.com/sclorg/rails-ex/blob/master/README.md. * S parametry: * Name=rails-pgsql-persistent * Namespace=openshift * Limit paměti=512Mi * Limit paměti (PostgreSQL)=512Mi * Kapacita svazku=5Gigit URL / Gigit https:///hubgit https://org /Gsit -ex.git * Git reference =* Context Directory =* Aplikace Hostname =* GitHub Webhook Secret =ahNYBvvbrEFhRjFEX28XdXn04CvMgkbQuABBKruJ # generované * tajný klíč =m2aq81igaa74gh1shh8vawcywvsxjqjqubywwkcadymj0b1va0krkgsog000ksdusf7h6gyyhoxyh6dcfhw2swsen85o8sq43vod1hvlbtvu7n6x14sn7k4vcs0uwxr # generované * Aplikace Jméno =openshift * Aplikace Password =tajný * Kolejnice pro životní prostředí =výrobní * Database Service Name =postgresql * Uživatelské jméno databáze=userWXH # vygenerováno * Heslo databáze=pOxlVrav # vygenerováno * Název databáze=kořen * Maximální připojení k databázi=100 * Množství sdílené vyrovnávací paměti=12 MB - Vytváření Mirror G Zdroje tajné „rails-pgsql-persistent“ vytvořeno služba „rails-pgsql-persistent“ vytvořeno route.route.openshift.io „rails-pgsql-persistent“ vytvořeno imagestream.image.openshift.io „rails-pgsql-persistent“ vytvořeno buildconfig. build.openshift.io „rails-pgsql-persistent“ vytvořeno deploymentconfig.apps.openshift.io „rails-pgsql-persistent“ vytvořeno persistentvolumeclaim „postgresql“ vytvořeno služba „postgresql“ vytvořeno deploymentconfig.apps.openqshift.io „postgres“ -> Úspěch Přistupujte ke své aplikaci cestou 'rails-pgsql-persistent-ocs-block-app.apps.example.com' Naplánováno sestavení, ke sledování průběhu použijte 'oc logs -f buildconfig/rails-pgsql-persistent'. Spusťte 'oc status' a zobrazte svou aplikaci.
Po chvíli ověřte, že je aplikace funkční:
[alexon@bastion ~]$ oc statusV projektu ocs-block-app na serveru https://api.example.com:6443svc/postgresql - 172.30.176.29:5432 dc/postgresql nasazuje openshift/postgresql:12-el8 nasazení #1 nasazeno před 4 minutami – 1 podhttp://rails-pgsql-persistent-ocs-block-app.apps.example.com (svc/rails-pgsql-persistent) dc/rails-pgsql-persistent nasazení istag/rails-pgsql-persistent:latest <- bc/rails-pgsql-persistent source builds https://github.com/sclorg/rails-ex.git na openshift/ruby:2.6-ubi8 nasazení #1 nasazeno před 3 minutami - 1 podView podrobnosti s 'oc description /' nebo seznam zdrojů s 'oc get all'.[alexon@bastion ~]$ oc get podsNAME STAV PŘIPRAVENO RESTARTUJE AGEpostgresql-1-deploy 0/1 Dokončeno 0 4m49spostgresql -1-k6t47 1/1 Spuštěno 0 4m46srails-pgsql-persistent-1-build 0/1 Dokončeno 0 4m50srails-pgsql-persistent-1-deploy 0/1 Dokončeno 0 3m50srails-pgsql-persistent-1-deploy 0/1 Dokončeno 0 3m50srails-pgsql-persistent-1-deploy 0/1 Dokončeno 0 3m50srails-pgsql-persistent-1-deploy 0/1 Dokončeno 0 3m50srails-persistent-1-deploy 0 2m57srails-pgsql-persistent-1-hook-pre 0/1 Compl ed 0 3m6s
Zkontrolujte PVC vytvořené aplikací, že používá ODF blok SC, což je v tomto případě Ceph RBD:
[Alexon@Bastion ~] $ oc Získejte PVCNAME Stav objemové kapacity Přístupové režimy StorageClass Agepostgresql Bound PVC-371FAEC8-2017-43B4-8416-7003A0D539A9 5GI RWO OCS-StorageCLUSTER-RBD 8M35S
Ve specifikacích PV používaných PVC je v poli CSI atribut, který poskytuje název obrázku vytvořeného pro aplikaci v rámci fondu bloků Ceph. Název můžete z tohoto obrázku extrahovat následovně:
[alexon@bastion ~]$ oc získat pv pvc-371faec8-2017-43b4-8416-7003a0d539a9 -o jsonpath="{.spec.csi.volumeAttributes.imageName}{'\n'}"csi -vol-24624906-bccb-11eb-9cab-0a580a81023f
S názvem obrázku v ruce znovu otevřete panel nástrojů a vypište existující fondy:
[alexon@bastion ~]$ oc rsh -n openshift-storage $toolboxsh-4.4$ ceph dfRAW SKLADOVÁNÍ: VELIKOST TŘÍDY DOSTUPNÉ POUŽITÉ SUROVÉ POUŽITÉ % SUROVÉ POUŽITÉ ssd 1.5 TiB 3 5 GiB 3 5 GiB 1.5 TiB 1.3 Gi 2 1.3 TiB 1.3 TiB. TIB 1,3 Tib 252 GIB 255 GIB 16.63 FOYS:Pool ID Uložení Objekty použité%použité maximální dostupné OCS-StorageCluster-Cephblockpool 1 84 Gib 22,39K 252 GIB 19.37 350 Gib OCS-Storagecluster-Metadata 2 1,4 MIB 25 4,2 MIB 0 350 Gib 0 350 Gib 0 355 ocs-storagecluster-cephfilesystem-data0 3 0 B 0 0 B 0 350 GiB
Pamatujte, že jsem zmínil, že ocs-storagecluster-cephblockpool bazén se používá pro bloky? Podívejte se, jestli uvnitř najdete svůj obrázek:
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
Tady je tvůj obrázek. Zobrazte o něm další informace:
sh-4.4$ rbd -p ocs-storagecluster-cephblockpool info csi-vol-24624906-bccb-11eb-9cab-0a580a81023frbd image 'csi-vol-24624906-bccb-11eb-9 s 24624906-bccb-11eb-9 5 GiB na objednávku 1280 objektů 22 (4 MiB objekty) snapshot_count:0 id:926554e4aba49 block_name_prefix:rbd_data.926554e4aba49 formát:2 funkce:vrstvení op_features:flags:create_timestamp:Mon 24.května 2021 20:03:43 access_timestamp:Mon 24 květen 20 :03:43 2021 modify_timestamp:pondělí 24. května 20:03:43 2021
Podívejte se, že má stejnou velikost, která byla dříve definována pro vytvoření PVC. A co se stane, když zvýšíte kapacitu PVC? Zvýšení z 5 GB na 10 GB:
[Alexon@Basttion ~] $ oc Získejte PVCNAME Stav objemové kapacity Přístupové režimy StorageClass Agepostgresql Bound PVC-371FAEC8-2017-43B4-8416-7003A0D539A9 5GI RWO OCS-StorageCLUSTER-RBD 17M [Alexon@Bason ~ ~ ]$ oc patch pvc postgresql -n ocs-block-app --type json --patch '[{ "op":"nahradit", "cesta":"/spec/resources/requests/storage", "value":"10Gi"}] 'PersistentVolumeClaim/PostgreSQL Patched [Alexon@bastion ~] $ oc Získat PVCNAME STASTACE Přístupový režimy StorageClass Agepostgresql Bound PVC-371FAEC8-2017-43B4-8416-7003A0D539A9 10GI RWO OCS-STORAGECTECS-STORAGECTECS-S-STORAGECS-STORAGECTECS-S-STORAGECS-STORAGECS-STORAGECS-STORAGECS-STORAGECS-STORAGECS-STORAGECS-S-STORAGECS. /code>
Znovu otevřete panel nástrojů. Velikost obrázku byla také upravena, což odráží změnu velikosti PVC:
[alexon@bastion ~]$ oc rsh -n openshift-storage $toolboxsh-4.4$ ceph dfRAW STORAGE: VELIKOST TŘÍDY DOSTUPNÉ POUŽITÉ SUROVÉ POUŽITÉ % SUROVÉ POUŽITÉ ssd 1.5 TiB 5 GiB 1.5 TiB 1.3 Gi 5 1.5 TiB 1.3 TiB 1.3 TiB. TIB 1,3 Tib 253 GIB 256 GIB 16.64 FOY:Pool ID Uložený objekty použité %použité maximální dostupné OCS-StorageCluster-Cephblockpool 1 84 Gib 22,41K 253 GIB 19.39 350 GIB OCS-Storagecluster-Metadata 2 1,4 MIB 25 4.2 MIB 0 350 GIB 0 350 GIB 0 350 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-904fr' 8d vol-0a586 BCCB-11EB-9CAB-0A580A81023F ':Velikost 10 GIB V 2560 objekty pořadí 22 (4 objekty MIB) Snapshot_Count:0 ID:926554E4ABA49 Block_name_prefix:RBD_DATA.926554E. 4 20:03:43 2021 access_timestamp:Po 24. května 20:03:43 2021 modify_timestamp:Po 24. května 20:03:43 2021
Co když chcete vědět, na jakém zařízení a hostiteli je obrázek mapován? Klient Ceph načte nejnovější mapu clusteru. Algoritmus CRUSH vypočítá, jak namapovat objekt do skupiny umístění, a poté vypočítá, jak dynamicky přiřadit skupinu umístění k OSD. K nalezení umístění objektu potřebujete pouze název objektu a název fondu:
sh-4.4$ mapa ceph osd ocs-storagecluster-cephblockpool csi-vol-24624906-bccb-11eb-9cab-0a580a81023fosdmap e405 pool 'ocs-storagecluster-cephblockpool' (41) object4vol26csi' (41) -bccb-11eb-9cab-0a580a81023f' -> pg 1.ecb58a2b (1.b) -> nahoru ([1,0,2], p1) působící ([1,0,2], p1)
Nyní vím, že můj objekt je v PG, které má jako primární zařízení OSD ID 1, a také repliky v OSD ID 0 a 2. Na kterém uzlu v mém clusteru je démon OSD 1? Viz níže:
sh-4.4$ stav ceph osd+----+------------------------------+- ------+-------+--------+---------+--------+------- --+------------+| id | hostitel | použité | využít | wr ops | wr data | rd ops | rd data | stav |+----+------------------------------+-------+--- ----+--------+---------+--------+---------+------- ----+| 0 | IP-10-0-171-63.ec2.interní | 86,7G | 425G | 50 | 517 tis. | 0 | 0 | existuje, nahoru || 1 | IP-10-0-143-192.ec2.interní | 86,7G | 425G | 109 | 1224k | 0 | 0 | existuje, nahoru || 2 | IP-10-0-154-20.ec2.interní | 86,7G | 425G | 78 | 1048 tis. | 2 | 106 | existuje, až |+----+------------------------------+-------+- ------+--------+---------+--------+---------+----- ------+
Výše můžete vidět, že se nachází v uzlu ip-10-0-143-192.ec2.internal . A jaké zařízení se na tom uzlu používá? Viz níže:
SH-4,4 $ Ceph OSD TREEID TŘÍDA TŘÍDA HLAVA NÁZEK Stav Opětovné předvádění PRI-AFF -1 1,50000 Kořen Výchozí -5 1,50000 Region US-East-1 -4 0,50000 Zóna US-East-1A -3 0,50000 HOST OCS 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 Hostitel OCS-DeviceSet-2-CSI-2-DATA-0N9LKB 2 SSD 0,50000 OSD.2 UP 1,00000 1,00000 -14 0,50000 Zóna US-East-1C -13 0,50000 Hostitel OCS-DeviceSet-GP2-CSI-0-DATA-0GVT22 0 SSD 0,50000 OSD.0 Up 1,00000 1,00000
Nyní vím, který uzel a zařízení (hostitel ocs-deviceset-gp2-csi-1-data-085b8h ) můj obrázek je zapnutý. Ale pořád nevím, jaká cesta v tom uzlu to je. Za tímto účelem uvidíte další atribut PV, který vám poskytne tyto informace:
[alexon@bastion ~]$ oc získat pv pvc-371faec8-2017-43b4-8416-7003a0d539a9 -o jsonpath="{.spec.csi.volumeHandle}{'\n'}"0001-0011 -openshift-storage-0000000000000001-24624906-bccb-11eb-9cab-0a580a81023f
S informacemi o názvu uzlu, zařízení a svazku tedy přistupujte k uzlu a získejte svůj obrázek. Můžete to udělat buď greppingem na název obrázku na aktuálních přípojných bodech uzlu, nebo na název úchytu svazku:
[alexon@bastion ~]$ oc ladění node/ip-10-0-143-192.ec2.internal Starting pod/ip-10-0-143-192ec2internal-debug ...Chcete-li použít hostitelské binární soubory , spusťte `chroot /host`Pod IP:10.0.143.192Pokud nevidíte příkazový řádek, zkuste stisknout enter.sh-4.4# mount | grep 24624906-bccb-11eb-9cab-0a580a81023f/dev/rbd2 na /host/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-371faec8-2017-43b4-7-803160a 0011-openshift-storage-0000000000000001-24624906-bccb-11eb-9cab-0a580a81023f typ ext4 (rw,relatime,seclabel,stripe=16)
Můžete vidět, že obraz je připojen k následující cestě se souborovým systémem EXT4 podle zařízení/dev/rbd2
:
/host/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-371faec8-2017-43b4-8416-7003a0d539a9/globalmount/0001-0011-openshift-storage-000090002046009000002000900 -bccb-11eb-9cab-0a580a81023f
Podívejte se na obsah tohoto adresáře:
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+found userdatash-4.4# ls /host/var/lib/kubelet/plugins/kubernetes.io/csi/pv37-94b-pvc-1a692b-pvc80a / globalmount / 0001-0011-openshift-storage-000000000000001-24.624.906-bccb-11eb-9cab-0a580a81023f / userdata / PG_VERSION globální pg_dynshmem pg_logical pg_replslot pg_stat pg_tblspc pg_xact postmaster.optsbase přihlásit pg_hba.conf pg_multixact pg_serial pg_stat_tmp pg_twophase postgresql.auto.conf poštmistr .pidcurrent_logfiles pg_commit_ts pg_ident.conf pg_notify pg_snapshots pg_subtrans pg_wal postgresql.conf
A jak můžete vidět výše, toto je obsah vaší databáze blokové aplikace, kterou jste vytvořili.
[ Naučte se základy používání Kubernetes v tomto bezplatném cheatu. ]
Sbalit
Na začátku tohoto článku (druhá část série) jste vytvořili demonstrační projekt, se kterým budete pracovat. Také jste se podívali na mapování blokových aplikací v rámci clusteru ODF pomocí sady nástrojů Rook a příkazů OpenShift.
Nezapomeňte si přečíst třetí část, protože obsahuje další nápady na mapování a odstraňování problémů zaměřené na ukládání a mapování souborů.
Vyhledání obsahu blokové a souborové aplikace OCP v ODF:Vytvoření projektu úložiště souborů
5 věcí, které bych si přál vědět, než jsem se stal sysadminem
Linux