KubernetesにRookを入れる
刺身たんぽぽ同好会 Advent Calendar 2021の3日目の記事です。
「HTTPのまとめを気力が出れば」とかアドベントカレンダーには書いていましたが、@flano_yuki氏のまとめをする程度なのでやめました。 https://asnokaze.hatenablog.com/ を読めばいいと思います。
今回は、Kubernetes の初歩ネタで行こうと思います。
僕は参加しているICTSCというインフラコンテスト団体でKubernetes のクラスタを構築したりアプリを公式サイトにあるサンプルそのままで動かして喜んだりしています。
現在は、半年ほど放置されていたため動かないクラスタをバージョンアップ中です。
Kubernetes,Rook等について
- Kubernetesとは
ホームページによると
宣言的な構成管理と自動化を促進し、コンテナ化されたワークロードやサービスを管理するための、ポータブルで拡張性のあるオープンソースのプラットフォームです。Kubernetesは巨大で急速に成長しているエコシステムを備えており、それらのサービス、サポート、ツールは幅広い形で利用可能です。
オートスケーリング、オートヒーリング、ローリングアップデートおよびロールバックなどを提供するインフラ基盤を提供するソフトウェア?
- Rook とは
RookとはKubernetesで使うストレージオーケストレーターで、Cephなどを利用することができます。
Kubernetes では永続ストレージがないため、 - Podと同一のNodeのディスク領域にボリュームを掘る
- 外部にあるNFSやクラウドプロバイダーの外部ストレージ などの対応が必要。 RookはNodeに付属した空ディスクを利用して分散ストレージを構築できるのでマネージドっぽくなる。
インストール
ほぼQuic Start 通り、ベアメタルのkubernetesでcephを使う想定。
git clone --single-branch --branch v1.7.8 https://github.com/rook/rook.git cd rook/cluster/examples/kubernetes/ceph kubectl create -f crds.yaml -f common.yaml -f operator.yaml
これでrookのもろもろができる。
cephクラスターを作成するわけだが、dodes
をコメントアウトをはずして利用するディスクを書いてあげる。
- # nodes: - # - name: "172.17.4.201" - # devices: # specific devices to use for storage can be specified for each node - # - name: "sdb" + nodes: + - name: "nodeのip/hostname" + devices: # specific devices to use for storage can be specified for each node + - name: "ディスク名"
toolbox.yamlを使えばcephクラスタを確認できる 。
filesystem.yaml、storageclass.yamlもデプロイすればpvcを作ってpodにマウントすれば終わり。
Exampleを大体そのまま使えば出来上がる。 お手軽ですね。