味噌汁を飲みます

そんなに深く考えて書いていない twitter: siberiy4

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.yamlstorageclass.yamlもデプロイすればpvcを作ってpodにマウントすれば終わり。

Exampleを大体そのまま使えば出来上がる。 お手軽ですね。