Kubernetes環境のメモ
kubernetesを動かすためのインフラ環境面のメモ
おさらい
kubernetes ・・・・・ コンテナ管理ツール
kubernetesクラスタ・・・マスターノードとワーカーノードから構成されるコンテナ稼働基盤
コンテナ・・・・・・・ホストOSとカーネルを共有するアプリケーション(?)
コンテナってよくわからない
コンテナすら実際に使ってなこなかった身としては、
コンテナはアプリケーションと言ってよいのか?というのは疑問。
みんなコンテナで(テスト的に)ubuntuとか動かしたりしてるけど、あれのコンテナイメージは厳密にはOSではないのかな。
ホストOS選定
上述の通り、コンテナはホストOSとカーネルを共有しますので、
コンテナイメージのCPUアーキテクチャはホストOSと同一でないといけない。
(64bitと32bitとか、Armとx86とか)
OS選定というかCPUアーキテクチャかな、、、
なので、
ホストOSとして安価だからといって
Armを選んだりすると、お望みのコンテナアプリを動かせなかったりするので注意。
ちなみにアプリケーションは、カーネルの互換性をある程度持つように作られているそうで、カーネルバージョンの違いはある程度吸収してくれる。
そのうえでOSは選定しますが、正直なんでもいい気がします。
今回はプラットフォームがOCIでしたので、Oracle Linux9 (RHEL互換)を採用。
(なんとなくクセのありそうなOracle Linuxで構築できるなら他何でもいけるだろう、、の精神)
ネットワーク
構築しながら調べてみたものの難しい。
kubernetesクラスタでは、CNI (Container Network Interface)というコンテナネットワークを制御するプラグインを併用する。
CNIにもいろいろあるようで、
Calicoを入れてみたものの思うように動かず、、、、flannelを使ってみた。
(詳細は別記事にします)
インフラで仮想環境やL3ネットワーク扱ってる人はまだマシだと思いますが、なかなか理解するには大変である。
ストレージ
これまた難しい。
コンテナが利用するボリュームをkubernetes側で設定することができるのだが、
脳死でNFSで同時書き込みできるところを使えればラクだとは思うのだが、
理解の目的も兼ねてLocal PathやemptyDirなんかを使ってみた。
(詳細は別記事にします)
まとめ
初めて触ったときは「井の中の蛙大海を知らず」感を味わいました。
色んな選択肢があって、それらほぼすべてがOSSで、
組合せて使ったときに動かない要因が互換性なのかインフラレイヤなのかなど、
大海を泳ぎながらひとつずつクリアしていく感じです。
Discussion