OpenShiftまいど。レッドハットでストレージを中心にクラウドインフラを生業にしている宇都宮です。Tokyoがありました。足を運んでくださった皆さん、ありがとうございました。CHALLENGEという展示ブースの一角を担当させていただきました。中身はほぼDIY工作だったのでめっちゃ疲れましたが、めっちゃ楽しかったです。目立つ異様な一角を提供できたかなーと思います。Meetup#1と、12/20開催予定のOpenShift.RUNの両方で展示する予定です。CSIのアーキテクチャのお話でした。CSIドライバを使ってCephFSを使ってみましょうね。CephFSってなによはいそれでは本題に入ります。Cephは本体部分がRADOSというオブジェクトストアなんですが、ファイルアクセスのインターフェースを持ってます。それをCephFSと呼んだりします。kernelが持ってるクライアントか、独自のFUSEクライアントを使ってマウントします。一般的なNFSやCIFSのようなファイルプロトコルでクライアントからマウントすることはできません。GatewayのようにすることでNFS,CIFSに対応することは可能)そんなCephFSですが、もちろんRook-Ceph上でも使うことができます。RWXのPVが必要な時はCephFS使うことになるので、使い方を覚えておくと便利ですよ。KubernetesクラスタとCephクラスタの作成いつもどおりAWS上に3master+6workerで作って、3workerをストレージ専用に使います。3workerはrole=storageとlabelを付けます。ストレージ専用のworkerには、それぞれ20GBのEBSを1つずつattachしておきます。operatorでCephクラスタを作ります。何気にこれまで、githubのrookリポジトリをcloneしてやるスタンダードな方法を紹介してなかったので、今回は簡単にやりますね。cloneしましょう。masterでもいいですがstableな方がいいでしょう。最新のstableなのは1.1なので、これを使います。試すぶんにはこの辺は何も考えずにやっちゃっていいです。operator.yamlでoperatorを入れます。podが上がってしまいます。rook-discoverは、ノードにHDDやSSDみたいなデバイスがattachされたかどうかをずっと見張ってる奴です。今回デバイスはstorageノードにしか付けません。appノードにrook-discoverが居ても意味がない。storageノードにだけrook-discoverが上がるようにNodeAffinityを設定しておきます。元のoperator.yamlの中に、グレーアウトしてるDISCOVER_AGENT_NODE_AFFINITYというオプションがあるので、こいつをいじるのが話早いと思います。役に立つかもしれないので後段で使ったoperator.yamlを置いておきます。toolbox.yamlはい、これで5,6分ほどコーヒーを飲んで待てばCephクラスタができてるはずです。pgs:はい、クラスタできてます。ファイルシステムを作るそれではCephでファイルシステムを作りましょう。createdこれだけ。rook-ceph-mds-myfs-〜というpodが2つ上がってればオッケーです。Ceph側ではどう見えるでしょうか。GiBCeph側では、myfsというファイルシステムが1つできていて、myfs-metadataとmyfs-data0という2つのpoolができています。先にも言った通り、CephはRADOSと呼ばれるオブジェクトストアが本体のデータ格納機構で、全てのデータをオブジェクトとして扱います。ファイルシステムとして利用する際には、ファイルの実体の他にメタデータも同じように保管しないといけません。メタデータは参照される機会が多いし、ぶっ壊れたらファイルシステムそのものが使えなくなる可能性があります。実体よりも速くて冗長性が高いpoolに分ける方がオススメってことから、CephFSではファイルの実体とメタデータが別々のpoolに分けて保管されます。server"のことで、こいつがファイルのメタデータを扱います。CephFSを使う際にはceph-mdsは必須です。アプリから使ってみるまずお約束のstorageclassの作成です。深いセントラルドグマにマニフェストファイルがあります。2d21hはいできた。名前が気に入らない場合は適宜変えてね!さあここからだ。第2話で現れたdateをひたすら吐き出すダメMSappを改造して、3つのPodがappノードから同時に同じPVをRWXでマウントしdateを吐き出すappにしてみます。dateを吐く感じにしました。それじゃあこのグフを走らせてみます。ファイルの中身を見てみしょう。どれか1個のpodに入って見ます。date-55b84bcff-mhclbそれぞれのpodのファイルには、それぞれのpodからしか書いてませんねー。date-55b84bcff-tlcwp...3pod全員がdateを吐いてます。RWXだとこんな感じで同じファイルに書き込んだりできますね。ファイルにロックが掛かってる時は書けないのでご注意ね☆CephFSではPVはどう見える?はい今日最後です。CephFSでPVはどういう風に扱われるのか確認してみましょう。先のグフでPVが1個切られましたが、もう1個PVCを投げて切ってみます。56mPVC,PVが2個ずつできました。Ceph側で確認してみましょう。]ファイルシステムは一つのままです。CephFSでは、PVCごとに新しくファイルシステムが作られてPVとして出されるわけではないということですね。PVはどこにあるのか、ファイルシステムを直でマウントして確認してみましょう。podにファイルシステムをマウントできるので、それにしたがってやってみます。/tmp/cephfsマウントできたっぽい。shared_filesh-4.2#なるほど。いうディレクトリをPVとしてexportしていることがわかります。CephFSではデカいファイルシステムの中にサブディレクトリを切ってPVとしてユーザーに切り出すということですね。CSIでCephFSを使ってみました。CephFSってちょっと頼んないのかなって思ってたけど、意外と普通に使えるもんですね。それじゃあ今回はここまで。トリプル・ポッドまいど。各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。