GNU/Linux >> Znalost Linux >  >> Linux

Vyhledání obsahu blokové a souborové aplikace OCP v ODF:Vytvoření projektu

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ů.


Linux
  1. Nejúčinnější způsob, jak vyprázdnit obsah souboru?

  2. Rozdíl mezi symbolickými a pevnými odkazy?

  3. Io Redirection and the Head Command?

  1. Jak zjistit typ souboru Img a připojit jej?

  2. Upozornění libpng:Nekompatibilní verze libpng v aplikaci a knihovně

  3. Vyhledání nejdelšího slova v textovém souboru

  1. Rozdíl mezi .exrc a .vimrc?

  2. Hledání obsahu jednoho souboru v jiném souboru

  3. Jak zazipujete soubor a uchováte soubor .gz?