ビビリフクロウの足跡

いつもお世話になっているインターネットへの恩返し

自宅プライベートクラウド再構想

生きています! 過去の自分よ、ごめんなさい。。。もうそれ以上は言うまい。。。

さて、自宅プライベートクラウド環境ですが、構成管理ツールで構築・運用を自動化しているものの、やはりVMに直接ソフトウェアをインストールするとなるとペット的に扱わざるを得ないので、アップデートしなくなり塩漬けになる、という問題をはらんでいました。OpenStackは半年でアップデートされるので、もう少し気軽に移行できるようにしておきたい。。。

そう思い立ち、全てのコンポーネントKubernetes上でコンテナとして扱うことにしました。Yahoo!さんがやっているようなOpenStack on Kubernetesですね。これを自宅でも実現したいということです。今回はこの構想について紹介したいと思います。なお、Keystone、Swift、Glance、Nova、Neutron、Horizonまでは検証済みで、動いた実績のある構想です。

物理構成

物理構成は以下の図のとおりです。8台の物理サーバと1台の1G L2SW、1台の10G HUBを用意しています。図を見ていただければ解ると思いますので、特筆することは無いです。機械学習などの重い処理を動かすことは想定していないので、CPUに関してはこだわりなく、非力なものを使っています。メモリ特化です!

f:id:bbrfkr:20200407091909p:plain

仮想構成

仮想的な構成は以下の図のとおりです。仮想的な構成とはここではVMまでに拡張した構成を表すとします。

KVMホスト表記されている1台はNATルータとAWX&Vaultサーバに分割し、残った3台はKubernetes Master・Worker、etcdと負荷分散用のLBを入れ込んでKubernetesを稼働かつ、OpenStackのコントローラコンポーネント群を動かします。

Nova-ComputeホストおよびCeph-OSDホストはベアメタルでkubeletを載せて、Kubernetes Workerノードとしてそれぞれの役割で利用します。

f:id:bbrfkr:20200407091921p:plain

コンポーネント相関

プライベートクラウドを構成する各要素の関係も図に示してみました。今回、先程からCeph-OSDと言っているようにストレージとしてはCephを用います。Cephクラスタは自前でCephコンテナイメージを作ってたててもいいですが、CNCF Incubating ProjectとしてコミュニティマネージドなCephオーケストレーションツール(Cephだけではないですが。。。)であるRookを使い、省力化しています。基本的にコンピュートは冗長構成を組みますが、リソースの関係上冗長化することができない、しても無意味なところ(NATルータなど。2プロバイダ契約ではないので、冗長化しても効果が薄い)はSPOFのままです。一人でこれだけの量のコンポーネントを見ることになるのでEFKスタックとPrometheus&Grafanaを使ってログ収集・可視化、メトリクス監視・可視化はしっかり行っていきます。。。

f:id:bbrfkr:20200407092859p:plain

ベストエフォートで今後、Keystone以降の組み方も記事を書いていきたいと思います。。。