Kubernetes 構築
要求
クラスタは HA に拡張可能なこと
最初2ノードからとかなんで……
もう何もわからん……
いっぱいマシンがあってちょっと計算資源を無駄にしてもいいなら仮想化なんていらないのだ
でもそんなわけにはいかなくて
物理ホストの個数は限られるので,controller と worker は物理的には同居しているようにしたい
もちろん仮想的に分離されているのが望ましい
ワークロードクラスタは HA を組めるようにしたい
ワークロードクラスタ内で kubevirt を使って VM を展開したいので,クラスタの展開に VM を使うのは避けたい
nested ns は最悪許すけど nested vm は……
ホストの展開を簡単にしたい
FCOS を使った netboot は重大な問題を抱えていた
イテレーションのコストが高い
0からの起動(再起動ボタンを押す必要がある!)
扱いやすいコンソールがない
グラフィック出力を取り出し,目grepで問題を発見する必要があった
しかもホストごとの構成が異なるため,ホストごとのデバッグが必要であり,コストは跳ね上がった
宣言的な構築はデバイスに対する知識が必要(それはそう!)
教訓
環境が異なるデバイスのセットアップを完全に事前に宣言するのは難しい
とはいえ CoreOS は小さく,便利なので使いたい
初手で SSH ができる程度の環境を(ある程度制御しつつ)構築できるというのはとてもよい
ignition を本当に初期構築で使える分だけで使うならば困ることは少ない
出番も少ないので忘れそうではあるが……
仮想化どうすんの
前提
概ね Read only なシステムイメージを用意し,展開して適当にストレージを割り当てて動作させる仕組みが必要
オーケストレーションが可能なこと
各ホストごとに手作業で展開するのは忘れそうなので
とはいえネットワークは分けたい
BGP 使った IP VPN を構築するほどのモチベは無い
管理ネットワークは単一のルーターを上位に置く普通の構成で作る
コントローラが落ちてもデータプレーンは生き続けるのでそこまで問題はない
VM
System Container
よさそう
資料は?
どう制御するかだけ決まれば悪くはなさそう
systemd と会話する方法ってファイルシステム以外にあるんすか?
?
案
ネットワークを分離し,macvlan + vlan を使って対外接続
展開は手作業?
k8s で展開するのはアリ
systemd-machined と会話して Reconcilation,なかったら適当にファイル置きつつ systemd-nspawn を叩くやつを作ればよい
base image によってはそんなことをやる必要はないのかも
rpm-ostree + zincati とかで自動再起動をかける仕組みだと一回組んだらもう手を入れる必要はない
適当な ephemeral container として展開できたらいいね