Kubernetes, rook + ceph depolama sistemini dağıtır

kale profili

Konteynırın kalıcı depolanması Konteynırın kalıcı depolanması, konteynırın depolama durumunu korumanın önemli bir yoludur. Depolama eklentisi, konteynırda oluşturulan dosyalar fiilen kaydedilecek şekilde, konteynırdaki ağa veya diğer mekanizmalara dayalı olarak bir uzak veri hacmini monte edecektir. Uzak bir depolama sunucusunda veya mevcut ana bilgisayarla herhangi bir bağlayıcı ilişki olmaksızın dağıtılmış bir şekilde birden çok düğümde depolanır. Bu şekilde, yeni bir konteyneri hangi ana bilgisayarda başlatırsanız başlatın, veri biriminde depolanan içeriğe erişmek için belirtilen kalıcı depolama birimini bağlamayı talep edebilirsiniz. Kubernetes'in gevşek bağlı tasarımı nedeniyle Ceph, GlusterFS, NFS vb. Gibi çoğu depolama projesi Kubernetes için kalıcı depolama yetenekleri sağlayabilir.

Ceph dağıtılmış depolama sistemi Ceph, nesne, dosya ve blok depolama sağlayan, oldukça ölçeklenebilir dağıtılmış bir depolama çözümüdür. Her bir depolama düğümünde, Ceph'in nesneleri depoladığı dosya sistemini ve Ceph OSD (Object Storage Daemon) işlemini bulacaksınız. Ceph kümesinde, Ceph kümesinin yüksek düzeyde erişilebilir kalmasını sağlayan Ceph MON (izleme) daemonunu da bulabilirsiniz.

Rook Rook, platformlar ve çerçeveler sağlayan açık kaynaklı bir bulutta yerel depolama düzenlemesidir; bulut yerel ortamıyla yerel olarak entegre etmek için çeşitli depolama çözümleri için platformlar, çerçeveler ve destek sağlar. Rook, depolama yazılımını kendi kendini yöneten, kendi kendini genişleten ve kendi kendini onaran depolama hizmetlerine dönüştürür. Bunu, dağıtım, rehberlik, yapılandırma, sağlama, genişletme, yükseltme, geçiş, felaket kurtarma, izleme ve kaynak yönetimini otomatikleştirerek gerçekleştirir. Rook, kendi işlevlerini uygulamak için temel bulut yerel konteyner yönetimi, zamanlama ve düzenleme platformu tarafından sağlanan araçları kullanır. Rook şu anda Ceph, NFS, Minio Object Store ve CockroachDB'yi desteklemektedir.

Rook, Ceph depolama sisteminin Kubernetes üzerinde çalışmasını sağlamak için Kubernetes temellerini kullanır. Aşağıdaki şekil Ceph Rook'un Kubernetes ile nasıl bütünleştiğini göstermektedir:

Bir Kubernetes kümesinde çalışan Rook ile Kubernetes uygulamaları, Rook tarafından yönetilen blok cihazları ve dosya sistemlerini monte edebilir veya nesne depolaması sağlamak için S3 / Swift API'yi kullanabilir. Rook operatörü, depolama bileşenlerini otomatik olarak yapılandırır ve depolamanın kullanılabilir ve sağlıklı olmasını sağlamak için kümeyi izler.

Rook operatörü, depolama kümesini yönlendirmek ve izlemek için gereken tüm işlevlere sahip basit bir konteynerdir. Operatör, ceph monitör bölmelerinin ve OSD'lerin arka plan yordamlarını başlatır ve izler ve temel RADOS depolaması sağlar. oprerator, hizmeti çalıştırmak için gereken bölmeleri ve diğer bileşenleri başlatarak dosya sisteminin havuzunu, nesne depolamasını (S3 / Swift) ve CRD'yi yönetir.

oprerator, kümenin düzgün şekilde çalıştığından emin olmak için depolama arka plan programını izleyecektir. Ceph mons, gerektiğinde başlayacak veya yük devretme yapacak ve küme büyüdükçe veya küçüldükçe başka ayarlamalar yapacak. Operatör ayrıca API hizmet talepleri için gerekli durum değişikliklerini izleyecek ve değişiklikleri uygulayacaktır. Rook oprerator ayrıca Rook ajanını yarattı. Bu aracılar, her Kubernetes düğümünde dağıtılan bölmelerdir. Her ajan, Kubernetes hacim denetleyicisiyle entegre olan bir Flexvolume eklentisiyle yapılandırılır. Ağ depolama aygıtlarını takma, birimleri takma ve dosya sistemlerini biçimlendirme gibi düğümde gereken tüm depolama işlemlerini gerçekleştirin.

Kale konteyneri, tüm verileri yönetmek ve depolamak için gerekli tüm Ceph artalan süreçlerini ve araçları içerir - veri yolu değişmemiştir. Rook, Ceph'e tam bağlılığını korumaya çalışmadı. Birçok Ceph kavramı (yerleşim grupları ve ezilme haritaları gibi) gizlidir, bu nedenle onlar için endişelenmenize gerek yoktur. Bunun yerine Rook, fiziksel kaynaklar, havuzlar, birimler, dosya sistemleri ve paketler dahil olmak üzere yöneticiler için basitleştirilmiş bir kullanıcı deneyimi oluşturur. Aynı zamanda, gerektiğinde gelişmiş konfigürasyonları uygulamak için Ceph araçlarını kullanabilirsiniz. Rook, golang'da uygulanmaktadır. Ceph, veri yolunun yüksek oranda optimize edildiği C ++ 'da uygulanır. Bu kombinasyonun her iki dünyanın da en iyisini sağlayabileceğine inanıyoruz.

Dağıtım ortamı hazırlığı

Kale projesi adresi: https://github.com/rook/rook kale resmi referans belgesi: https://rook.github.io/docs/rook/v0.9/ceph-quickstart.html

Kubernetes küme hazırlığı kubeadm, 3 düğümlü bir kubernetes 1.13.1 kümesi (ana düğüm x1, düğüm düğümü x2) dağıtır, küme dağıtım referansı: https://blog.csdn.net/networken/article/details/84991940

Küme düğümü bilgileri:

192.168.92.56 k8s-ana 192.168.92.57 k8s-node1192.168.92.58 k8s-düğüm2

Ceph'in yüksek kullanılabilirlik gereksinimlerini karşılamak için kümede en az üç düğüm mevcuttur. Burada ana düğüm, çalışan kapsülleri destekleyecek şekilde yapılandırılmıştır.

Rook, depolama yöntemlerini kullanır. Rook varsayılan olarak tüm düğümlerin tüm kaynaklarını kullanır. Rook operatörü, tüm düğümlerdeki OSD cihazlarını otomatik olarak başlatır. Rook, mevcut cihazları izlemek ve keşfetmek için aşağıdaki standartları kullanır:

  • Cihazın bölümü yok

  • Cihazın biçimlendirilmiş bir dosya sistemi yok

Rook, yukarıdaki standartları karşılamayan ekipman kullanmayacaktır. Hangi düğümlerin veya cihazların kullanılacağını belirtmek için yapılandırma dosyasını da değiştirebilirsiniz.

Yeni bir disk ekleme Burada, tüm düğümlere yeni bir 50GB disk ekleyin: OSD diski olarak depolama alanı sağlayan / dev / sdb.Ekleme tamamlandıktan sonra, ana bilgisayarın onu normal şekilde tanıyabildiğinden emin olmak için diski tarayın:

  • # SCSI veriyolunu tarayın ve SCSI aygıtları ekleyin

  • $ (ls / sys / class / scsi_host) içindeki host için; echo "---" yapın > / sys / class / scsi_host / $ host / tarama; bitti

  • # SCSI veri yolunu yeniden tarayın

  • $ (ls / sys / class / scsi_device /) içindeki scsi_device için; echo 1 yapın > / sys / class / scsi_device / $ scsi_device / device / rescan; tamamlandı

  • # Eklenen diski görüntüleyin, eklemenin başarılı olduğunu belirten sdb'yi görebilirsiniz

  • lsblk

  • Ek talimatlar olmadan, aşağıdaki tüm işlemler ana düğümde gerçekleştirilir.

    Kale Operatörünü konuşlandırın

    Kale github deposunu yerel olarak klonla

    git klon cd rook / küme / örnekler / kubernetes / ceph /

    Rook sistem bileşenlerini dağıtmak için yaml dosyasını çalıştırın:

    $ kubectl apply -f operator.yaml ad alanı / rook-ceph-system oluşturuldu customresourcedefinition.apiextensions.k8s.io/cephclusters.ceph.rook.io oluşturuldu customresourcedefinition.apiextensions.k8s.io/cephfilesystems.ceph.rook.io oluşturuldu customresourcedefinition.apiextensions.k8s.io/cephobjectstores.ceph.rook.io oluşturuldu customresourcedefinition.apiextensions.k8s.io/cephobjectstoreusers.ceph.rook.io oluşturuldu customresourcedefinition.apiextensions.k8s.io/cephblockpools.ceph.rook.io oluşturuldu customresourcedefinition.apiextensions.k8s.io/volumes.rook.io oluşturuldu clusterrole.rbac.authorization.k8s.io/rook-ceph-cluster-mgmt oluşturuldu role.rbac.authorization.k8s.io/rook-ceph-system oluşturuldu clusterrole.rbac.authorization.k8s.io/rook-ceph-global oluşturuldu clusterrole.rbac.authorization.k8s.io/rook-ceph-mgr-cluster oluşturuldu serviceaccount / rook-ceph-system oluşturuldu rolebinding.rbac.authorization.k8s.io/rook-ceph-system oluşturuldu clusterrolebinding.rbac.authorization.k8s.io/rook-ceph-global oluşturuldu deployment.apps / rook-ceph-operator oluşturuldu $

    Yukarıda gösterildiği gibi, aşağıdaki kaynakları oluşturacaktır:

    1. İsim alanı: rook-ceph-system, kale ile ilgili tüm kapsüller bu isim alanı altında oluşturulacaktır.

    2. CRD: Beş CRD oluşturun, .ceph.rook.io

    3. Rol ve küme rolü: kullanıcı kaynak kontrolü

    4. serviceaccount: Rook tarafından oluşturulan Pod tarafından kullanılan ServiceAccount kaynağı

    5. konuşlandırma: kale-ceph-operatörü, kale cephesi ile ilgili bileşenleri konuşlandırın

    Rook-ceph-operator'un konuşlandırılması, Agent ve Discoverpod'ların kümede DaemonSet biçiminde konuşlandırılmasını tetikleyecektir. Operatör, kümedeki her ana bilgisayarda iki bölme oluşturacak: kale keşfetme, kale-ceph-ajan:

    $ kubectl pod -n rook-ceph-system -o geniş olsun İSİM HAZIR DURUM YENİDEN BAŞLAR YAŞ IP DÜĞÜMÜ NOMİNE DÜĞÜM OKUMA KAPILARI rook-ceph-agent-49w7t 1/1 Koşu 07m48s 192.168.92.57 k8s-node1 < Yok > < Yok > rook-ceph-agent-dpxkq 1/1 Çalışıyor 0111s 192.168.92.58 k8s-node2 < Yok > < Yok > rook-ceph-agent-wb6r81/1 Koşu 07m48s 192.168.92.56 k8s-master < Yok > < Yok > rook-ceph-operator-85d64cfb99-2c78k 1/1 Koşu 09m3s 10.244.1.2 k8s-node1 < Yok > < Yok > rook-Discover-597sk 1/1 Koşu 07m48s 10.244.0.4 k8s-master < Yok > < Yok > rook-Discover-7h89z 1/1 Koşu 0111s 10.244.2.2 k8s-node2 < Yok > < Yok > rook-Discover-hjdjt 1/1 Koşu 07m48s 10.244.1.3 k8s-node1 < Yok > < Yok > $

    Kale kümesi oluştur

    Kale operatörü, aracı ve keşif bölmelerinin zaten çalışır durumda olduğunu kontrol ettikten sonra, roo kümesi konuşlandırılabilir. Yaml dosyası sonucunu yürütün:

    $ kubectl apply -f cluster.yaml ad alanı / rook-ceph oluşturuldu serviceaccount / rook-ceph-osd oluşturuldu serviceaccount / rook-ceph-mgr oluşturuldu role.rbac.authorization.k8s.io/rook-ceph-osd oluşturuldu role.rbac.authorization.k8s.io/rook-ceph-mgr-system oluşturuldu role.rbac.authorization.k8s.io/rook-ceph-mgr oluşturuldu rolebinding.rbac.authorization.k8s.io/rook-ceph-cluster-mgmt oluşturuldu rolebinding.rbac.authorization.k8s.io/rook-ceph-osd oluşturuldu rolebinding.rbac.authorization.k8s.io/rook-ceph-mgr oluşturuldu rolebinding.rbac.authorization.k8s.io/rook-ceph-mgr-system oluşturuldu rolebinding.rbac.authorization.k8s.io/rook-ceph-mgr-cluster oluşturuldu cephcluster.ceph.rook.io/rook-ceph oluşturuldu $

    Yukarıda gösterildiği gibi, aşağıdaki kaynakları oluşturacaktır:

    1. Ad alanı: rook-ceph, Ceph kümesiyle ilişkili sonraki tüm kapsüller bu ad alanı altında oluşturulacaktır.

    2. serviceaccount: Pod of Ceph kümesi tarafından kullanılan ServiceAccount kaynağı

    3. Rol ve rol bağlama: kullanıcı kaynak kontrolü

    4. küme: kale-ceph, Ceph kümesi oluşturuldu

    Ceph kümesi başarıyla yerleştirildikten sonra, görüntüleyebileceğiniz bölmeler aşağıdaki gibidir; burada osd sayısı düğümlerinizin sayısına bağlıdır:

    $ kubectl pod -n kale-ceph -o geniş olsun İSİM HAZIR DURUM YENİDEN BAŞLAR YAŞ IP DÜĞÜMÜ NOMİNE DÜĞÜM OKUMA KAPILARI rook-ceph-mgr-a-8649f78d9b-hlg7t 1/1 Koşu 03h30m 10.244.2.6 k8s-node2 < Yok > < Yok > rook-ceph-mon-a-7c7df4b5bb-984x81/1 Koşu 03h31m 10.244.0.5 k8s-master < Yok > < Yok > rook-ceph-mon-b-7b9bc8b6c4-8trmz 1/1 Koşu 03h31m 10.244.1.4 k8s-node1 < Yok > < Yok > rook-ceph-mon-c-54b5fb5955-5dgr71/1 Koşu 03s30d 10.244.2.5 k8s-node2 < Yok > < Yok > rook-ceph-osd-0-b9bb5df49-gt4vs 1/1 Koşu 03h29m 10.244.0.7 k8s-master < Yok > < Yok > rook-ceph-osd-1-9c6dbf797-2dg8p 1/1 Koşu 03h29m 10.244.2.8 k8s-node2 < Yok > < Yok > rook-ceph-osd-2-867ddc447d-xkh7k 1/1 Koşu 03h29m 10.244.1.6 k8s-node1 < Yok > < Yok > rook-ceph-osd-ready-k8s-master-m8tvr 0/2 Tamamlandı 03h29m 10.244.0.6 k8s-master < Yok > < Yok > rook-ceph-osd-ready-k8s-node1-jf7qz 0/2 Tamamlandı 13h29m 10.244.1.5 k8s-node1 < Yok > < Yok > rook-ceph-osd-ready-k8s-node2-tcqdl 0/2 Tamamlandı 03h29m 10.244.2.7 k8s-node2 < Yok > < Yok > $

    Dağıtılan Ceph kümelerinin şunlar olduğu görülebilir:

    1. Ceph Monitors: Üç ceph-monitörü, varsayılan olarak başlatılır ve cluster.yaml'de yapılandırılabilir

    2. Ceph Mgr: Bir tanesi varsayılan olarak başlatılır ve cluster.yaml'de yapılandırılabilir.

    3. Ceph OSD'leri: cluster.yaml'deki yapılandırmaya göre başlayın ve varsayılan olarak tüm mevcut düğümlerde başlayın

    Kubernetes'e karşılık gelen yukarıdaki Ceph bileşeninin türü konuşlandırmadır:

    $ kubectl -n rook-ceph konuşlandırıldı ADI HAZIR GÜNCEL MEVCUT YAŞ kale-ceph-mgr-a 1/11 15h34m kale-ceph-mon-a 1/11 15h36m kale-ceph-mon-b 1/11 15h35m kale-ceph-mon-c 1/11 15h35m kale-ceph-osd-01/11 15h34m kale-ceph-osd-11/11 15h34m kale-ceph-osd-21/11 15h34m $

    Ceph kümesini silin

    Oluşturulan Ceph kümesini silmek istiyorsanız, aşağıdaki komutu yürütün:

    # kubectl delete -f cluster.yaml

    Ceph kümesini sildikten sonra, Ceph bileşen düğümünün önceden konuşlandırıldığı / var / lib / rook / dizini, Ceph kümesinin konfigürasyon bilgisini bırakacaktır. Daha sonra yeni bir Ceph kümesini dağıtırsanız, önce önceki Ceph kümesinin bilgilerini silin, aksi takdirde monitör başlatılamaz;

  • # kedi clean-rook-dir.sh

  • ana bilgisayarlar = (

  • k8s-ustası

  • k8s-düğüm1

  • k8s-düğüm2

  • )

  • $ {hosts} 'daki barındırma için;

  • ssh $ host "rm -rf / var / lib / kale / *"

  • bitti

  • Ceph kontrol panelini yapılandırın

    Ceph kontrol paneli, cluster.yaml dosyasında varsayılan olarak etkinleştirilmiştir. Kontrol panelinin hizmetini kontrol edin:

    $ kubectl hizmet al -n kale-ceph İSİM TİP KÜMELEME-IP HARİCİ-IP PORT (LER) YAŞ rook-ceph-mgr Kümesi IP 10.107.77.188 < Yok > 9283 / TCP 3s33d rook-ceph-mgr-dashboard Küme IP 10.96.135.98 < Yok > 8443 / TCP 3s33d rook-ceph-mon-a Kümesi IP 10.105.153.93 < Yok > 6790 / TCP 3s35d rook-ceph-mon-b Kümesi IP 10.105.107.254 < Yok > 6790 / TCP 3s34d rook-ceph-mon-c Kümesi IP 10.104.1.238 < Yok > 6790 / TCP 3s34d $

    Rook-ceph-mgr-dashboard tarafından izlenen bağlantı noktası 8443'tür. Kümeye harici erişim için nodeport tipi bir hizmet oluşturun.

    kubectl apply -f rook / cluster / samples / kubernetes / ceph / dashboard-external-https.yaml

    Nodeport tarafından açığa çıkan bağlantı noktasını kontrol edin, burada 32483 numaralı bağlantı noktası:

    $ kubectl hizmet al -n rook-ceph | grep panosu rook-ceph-mgr-dashboard Küme IP 10.96.135.98 < Yok > 8443 / TCP 3h37d rook-ceph-mgr-dashboard-harici-https NodePort 10.97.181.103 < Yok > 8443: 32483 / TCP 3sa29 dk $

    Dashboard'un oturum açma hesabını ve şifresini alın

    $ MGR_POD = `` kubectl pod al -n kale-ceph | grep mgr | awk '{print $ 1}' ' $ kubectl -n rook-ceph günlükleri $ MGR_POD | grep şifre 2019-01-0305: 44: 00.5857fced47827000 log_channel (denetim) günlüğü: from = 'client.415110.244.1.2:0/3446600469' entity = 'client.admin' cmd =: gönderme $

    Kullanıcı adı ve şifre alanlarını bulun, ben burada yöneticiyim, 8v2AbqHDj6

    Tarayıcıyı açın ve herhangi bir Düğümün IP + nodeport bağlantı noktasını girin, burada ana düğüm ip erişimini kullanın:

    https://192.168.92.56:32483

    Giriş yaptıktan sonraki arayüz aşağıdaki gibidir:

    Ana bilgisayar durumunu görüntüleyin:

    1 mgr, 3 mon ve 3 osd çalıştırın

    Monitörlerin durumunu görüntüleyin:

    OSD durumunu görüntüleyin

    Her biri 50 GB kapasiteye sahip 3 OSD normal durumdadır.

    Ceph araç kutusunu dağıt

    Varsayılan olarak başlatılan Ceph kümesinde Ceph kimlik doğrulaması etkin olduğundan, Ceph bileşeninin bulunduğu Bölmede oturum açtığınızda küme durumunu alamaz ve CLI komutlarını yürütemezsiniz. Şu anda Ceph araç kutusunu dağıtmanız gerekir. Komutlar aşağıdaki gibidir:

    kubectl apply -f kale / küme / örnekler / kubernetes / ceph / toolbox.yaml

    Dağıtım başarılı olduktan sonra, bölme şu şekildedir:

    $ kubectl -n rook-ceph kapsülleri al -o geniş | grep ceph-tools rook-ceph-tools-76c7d559b6-8w7bk 1/1 Koşu 011s 192.168.92.58 k8s-node2 < Yok > < Yok > $

    Daha sonra bölmede oturum açabilir ve Ceph CLI komutunu çalıştırabilirsiniz:

    $ kubectl -n rook-ceph exec -it rook-ceph-tools-76c7d559b6-8w7bk bash bash: uyarı: setlocale: LC_CTYPE: yerel ayar değiştirilemez (en_US.UTF-8): Böyle bir dosya veya dizin yok bash: uyarı: setlocale: LC_COLLATE: yerel ayar değiştirilemez (en_US.UTF-8): Böyle bir dosya veya dizin yok bash: uyarı: setlocale: LC_MESSAGES: yerel ayar değiştirilemez (en_US.UTF-8): Böyle bir dosya veya dizin yok bash: uyarı: setlocale: LC_NUMERIC: yerel ayar değiştirilemez (en_US.UTF-8): Böyle bir dosya veya dizin yok bash: uyarı: setlocale: LC_TIME: yerel ayar değiştirilemez (en_US.UTF-8): Böyle bir dosya veya dizin yok #

    Ceph küme durumunu görüntüle

  • # ceph durumu

  • küme:

  • kimlik: abddff95-5fa0-47dc-a001-7fb291a42bc6

  • sağlık: HEALTH_OK

  • Hizmetler:

  • mon: 3 arka plan programı, çekirdek c, b, a

  • mgr: a (aktif)

  • osd: 3 osds: 3 yukarı, 3 inç

  • veri:

  • havuzlar: 1 havuz, 100 pgs

  • nesneler: 0 nesne, 0 B

  • kullanım: 12 GiB kullanıldı, 129 GiB / 141 GiB mevcut

  • sayfa: 100 aktif + temiz

  • #

  • Ceph yapılandırma dosyasını görüntüleyin

  • # cd / etc / ceph /

  • # ll

  • toplam 12

  • -rw-r - r-- 1 kök kök 1213 Ocak 11:28 ceph.conf

  • -rw-r - r-- 1 kök kök 623 Ocak 11:28 anahtarlık

  • -rw-r - r-- 1 kök kök 92 Eylül 2418:15 rbdmap

  • # kedi ceph.conf

  • mon_host = 10.104.1.238:6790,10.105.153.93:6790,10.105.107.254:6790

  • anahtarlık = / etc / ceph / anahtarlık

  • # kedi anahtarlık

  • anahtar = AQBjoC1cXKJ7KBAA3ZnhWyxvyGa8 + fnLFK7ykw ==

  • # kedi rbdmap

  • # RbdDevice Parametreleri

  • # havuzadı / resimadı id = istemci, anahtarlık = / etc / ceph / ceph.client.keyring

  • #

  • rook, RBD hizmeti sağlar rook aşağıdaki 3 depolama türünü sağlayabilir: Blok: Bir bölme tarafından tüketilecek blok depolama oluşturun Nesne: Kubernetes kümesinin içinde veya dışında erişilebilen bir nesne deposu oluşturun Paylaşılan Dosya Sistemi: Paylaşılacak bir dosya sistemi oluşturun birden çok bölmede

    Blok depolama sağlamadan önce (Sağlama), bir StorageClass ve bir depolama havuzu oluşturmanız gerekir. K8S, Rook ile etkileşim kurmak ve ardından kalıcı hacimleri (PV) tahsis etmek için bu iki tür kaynağa ihtiyaç duyar.

    Bir kubernetes kümesinde, rbd blok aygıtı hizmetleri sağlamak için aşağıdaki adımlar gereklidir:

    1. rbd-sağlama bölmesi oluşturun

    2. rbd'ye karşılık gelen depolama sınıfını oluşturun

    3. pvc oluşturun ve rbd'ye karşılık gelen depolama sınıfını kullanın

    4. rbd pvc kullanarak kapsül oluşturun

    Rook aracılığıyla bir Ceph Kümesi oluşturduktan sonra, rook'un kendisi rbd-sağlama hizmetini sağlar, bu nedenle tedarikçisini dağıtmamıza gerek kalmaz. Açıklama: Kod konumu pkg / operatör / ceph / provizyon / provizyoner.go

    Storageclass.yaml (varsayılan) yapılandırmasını görüntülemek için havuz ve StorageClass oluşturun:

    $ vim kale / küme / örnekler / kubernetes / ceph / storageclass.yaml apiVersion: ceph.rook.io/v1 tür: CephBlockPool meta veriler: isim: çoğaltma havuzu ad alanı: rook-ceph spec: çoğaltılmış: boyut: 1 --- apiVersion: storage.k8s.io/v1 tür: StorageClass meta veriler: isim: kale-ceph-blok hazırlayıcı: ceph.rook.io/block parametreler: blockPool: çoğaltma havuzu # Birimlerin oluşturulacağı kale kümesinin ad alanını belirtin. # Belirtilmezse, kümenin varsayılan ad alanı olarak "rook" kullanılır. # Bu aynı zamanda kümenin olacağı ad alanıdır. clusterNamespace: rook-ceph # Birimin dosya sistemi tipini belirtin. Belirtilmezse, "ext4" ü kullanacaktır. fstype: xfs # (İsteğe bağlı) Bu StorageClass ile depolama montajı için kullanılacak mevcut bir Ceph kullanıcısını belirtin. #mountKullanıcı: kullanıcı1 # (İsteğe bağlı) Ceph kullanıcı sırrını tutan tek bir anahtar içeren mevcut bir Kubernetes gizli adını belirtin. # Sır, depolamanın tüketileceği her ad alanında / alanlarında bulunmalıdır. #mountSecret: ceph-user1-secret

    Konfigürasyon dosyası replicapool adında bir depolama havuzu ve rook-ceph-block adında bir storageClass içerir.

    Yaml dosyasını çalıştırın

    kubectl apply -f /rook/cluster/examples/kubernetes/ceph/storageclass.yaml

    Oluşturulan depolama sınıfını görüntüleyin:

    $ kubectl depolama sınıfı al İSİM SAĞLAYICININ YAŞI kale cephesi bloğu ceph.rook.io/block 171m $

    Oluşturulan depolama havuzunu görüntülemek için ceph kontrol panelinde oturum açın:

    Depolamayı kullanma Resmi wordpress örneğini örnek alarak, Rook tarafından sağlanan blok depolamayı kullanmak için klasik bir wordpress ve mysql uygulaması oluşturun.Her iki uygulama da Rook tarafından sağlanan blok hacimlerini kullanacaktır. Yaml dosyası yapılandırmasını kontrol edin, esas olarak tanımlanmış pvc ve mount volume parçalarına bakın, wordpress.yaml dosyasını örnek olarak alın:

    $ kedi kale / küme / örnekler / kubernetes / wordpress.yaml ... --- apiVersion: v1 kind: PersistentVolumeClaim meta veriler: ad: wp-pv-iddia etiketler: uygulama: wordpress spec: storageClassName: rook-ceph-block accessModes: -ReadWriteOnce kaynaklar: istek: depolama: 20Gi --- ... volumeMounts: -name: wordpress-kalıcı-depolama mountPath: / var / www / html ciltler: -name: wordpress-kalıcı-depolama kalıcıVolumeClaim: ClaimName: wp-pv-iddia $

    Yaml dosyasında wp-pv-iddia adlı bir pvc tanımlanır, storageClassName rook-ceph-block olarak belirtilir ve istenen depolama alanı 20Gi'dir. Son kısım, wordpress-persistent-storage adlı bir birim oluşturur ve ClaimName'i pvc adı olarak atar ve son olarak birimi, bölmenin / var / lib / mysql dizinine bağlar. Mysql ve wordpress'i başlatın:

    kubectl uygulama -f kale / küme / örnekler / kubernetes / mysql.yaml kubectl apply -f rook / cluster / samples / kubernetes / wordpress.yaml

    Bu uygulamaların her ikisi de bir blok depolama birimi oluşturacak ve onu ilgili bölmelerine bağlayacaktır. Belirtilen pvc ve pv'yi kontrol edin:

    $ kubectl pvc al İSİM DURUM HACİM KAPASİTE ERİŞİM MODLARI DEPOLAMA SINIFI YAŞ mysql-pv-iddia Bağlı pvc-5bfbe28e-0fc9-11e9-b90d-000c291c25f320Gi RWO kale-ceph-blok 32m wp-pv-iddia Bound pvc-5f56c6d6-0fc9-11e9-b90d-000c291c25f320Gi RWO kale-ceph-block 32m $ kubectl pv al İSİM KAPASİTE ERİŞİM MODLARI GERİ ALMA POLİTİKASI DURUMU TALEP DEPOLAMA NEDEN YAŞI pvc-5bfbe28e-0fc9-11e9-b90d-000c291c25f320Gi RWO Sınırı Sil varsayılan / mysql-pv-iddia kale-ceph-blok 32m pvc-5f56c6d6-0fc9-11e9-b90d-000c291c25f320Gi RWO Sınırı Sil varsayılan / wp-pv-iddia rook-ceph-block 32m $

    Not: Buradaki PV otomatik olarak oluşturulacaktır. StorageClass alanını içeren PVC gönderildiğinde, Kubernetes bu StorageClass temelinde ilgili PV'yi oluşturacaktır. Bu, dinamik olarak PV oluşturmak için kullanılan Dinamik Provizyon mekanizmasıdır. PV Statik istekleri destekler , Ve iki şekilde dinamik yaratım. Ceph küme tarafını kontrol edin:

    $ kubectl -n rook-ceph exec -it rook-ceph-tools-76c7d559b6-8w7bk bash ... # rbd info -p replicapool pvc-5bfbe28e-0fc9-11e9-b90d-000c291c25f3 rbd image'pvc-5bfbe28e-0fc9-11e9-b90d-000c291c25f3 ': 5120 nesnede boyut 20 GiB sipariş 22 (4 MiB nesnesi) id: 88156b8b4567 block_name_prefix: rbd_data.88156b8b4567 format: 2 özellikler: katmanlama op_features: bayraklar: create_timestamp: Cum 4 Ocak 02:35:122019 #

    Rbd cihazını kontrol etmek için bölmede oturum açın:

  • $ kubectl podo geniş al

  • İSİM HAZIR DURUM YENİDEN BAŞLAR YAŞ IP DÜĞÜMÜ NOMİNE DÜĞÜM OKUMA KAPILARI

  • wordpress-7b6c4c79bb-t5pst 1/1 Çalışıyor 0135m 10.244.1.16 k8s-node1 < Yok > < Yok >

  • wordpress-mysql-6887bf844f-9pmg81/1 Çalışıyor 0135m 10.244.2.14 k8s-node2 < Yok > < Yok >

  • $

  • $ kubectl exec -it wordpress-7b6c4c79bb-t5pst bash

  • root @ wordpress-7b6c4c79bb-t5pst: / var / www / html #

  • root @ wordpress-7b6c4c79bb-t5pst: / var / www / html # mount | grep rbd

  • / dev / rbd0 / var / www / html türü xfs (rw, relatime, attr2, inode64, sunit = 8192, swidth = 8192, noquota)

  • root @ wordpress-7b6c4c79bb-t5pst: / var / www / html # df -h

  • Kullanılan Dosya Sistemi Boyutu Kullanılabilir Kullanım Yüzdesi Takılı

  • ...

  • / dev / rbd020G 59M 20G% 1 / var / www / html

  • ...

  • Oluşturulan resimleri görüntülemek için ceph kontrol paneline giriş yapın

    Wordpress ve mysql podları çalıştıktan sonra wordpress uygulamasının küme IP'sini alın ve şunlara erişmek için bir tarayıcı kullanın:

    $ kubectl svc wordpress'i edinin İSİM TİP KÜMELEME-IP HARİCİ-IP PORT (LAR) YAŞ wordpress LoadBalancer 10.98.178.189 < Bekliyor > 80: 30001 / TCP 136 milyon $

    WordPress'i ziyaret edin:

    Çin Bilim ve Teknoloji Üniversitesi'nin "Öğrenen Tanrısı" nereye gitti?
    önceki
    Nut R1 sadece ön sevişme, çığır açan bir ürün! Hammer, Nut TNT iş istasyonunu piyasaya sürdü
    Sonraki
    İnsansız bir sürüş ekolojisi nasıl oluşturulur ve insansız inişin teknik zorlukları nasıl çözülür, işte ayrıntılı bir referans
    King of Glory S13 sezonunun cildi ortaya çıktı ve dövüş sanatları tarzı çılgın demir kraliyet aslanı, ancak netizenler iki kelime ile yanıt verdi
    Tarihteki en eksiksiz Redis yüksek kullanılabilirlik teknolojisi çözümü
    480 GB SSD yaygınlaşacak: Renkli, iki NVMe SSD çıkarıyor
    130-180 bin yuan Zotye T700 modellerinin satış öncesi fiyat aralığına maruz kalma
    Zafer Kralı: Yang Yuhuan yeni bir kostüme sahip mi, iki tane bedava? Netizen: Güzellik tasarımcısını seçiyorum
    FILA'nın bu kadar şık olabileceğini hiç düşünmemiştim, monkey time 2017 sonbahar ve kışının yeni çalışması yayınlandı
    iQOO cep telefonu performans ölçümü: Snapdragon 855 "Tiger" ile kim rekabet edecek?
    Docker ana bilgisayarı, kapsayıcı ve kapsayıcıya alınmış hizmet izleme çözümü
    "Bir Gölge Gibi" afişi "Sevdim ve Özledim" i açığa çıkarır, "Evlilikten Sonra Gerçek Aşkla Tanış" teması, aşkın acımasız gerçeğine doğrudan vurur
    Çekiç Teknolojisi Kuş Yuvası konferansının arifesinde Wang Ziru, Luo Yonghao'ya saldırmak için uzun bir makale gönderdi.
    "Soul Solo" aslında çok yakışıklı, Decesolo 2017FW sizin için sokak varyasyonunu yorumlamak için işçilik ve tasarım kullanıyor
    To Top