ubuntuのlxd/lxcでmicroK8sは動作するか
1.概要
kubernatesを調べているとmicork8sの記事をネットで見つけました。軽量化されたkubernatesと書かれています。lxd環境で動作するとの記述があり、実際に導入してみました。個人的な印象ですが、kubernates in KVMとmicrok8s in lxdを比較すると、前者のほうが軽く動作する気がして、microk8sは軽量化されたkubernatesになっているのかなと感じました。
2.詳細
microk8sをlxdで動作させる場合、lxd上のubuntuコンテナ上でpodを動作させます。pod自体がコンテナなので、コンテナの上でコンテナが動作するような形に見えます。最初、lxdのubuntu-VM上で動作させると思っていたのですが、構成が異なることに気が付きました。
kubernatesはmaster nodeとworker nodeに分かれています。しかし、microk8sは全てがmaster nodeであり、worker nodeでもあるようです。kubernatesのmaster nodeの弱点をカバーできそうな気がしました。master nodeが停止しても他のnodeがmaster nodeとして機能しそうな気がします。
(1) 導入
参考資料に従って作業をします。
(a) lxd導入
(b) プロファイル設定
(c) コンテナ作成と設定内容修正
(d) microk8s導入
(e) node追加
(f) 試験
(2) 詳細
(a) lxd導入
本ブログの資料を参考にして、lxdをubuntu-20.04 desktopに導入します
(b) プロファイル設定
参考資料の通りに実施します
$ lxc profile create microk8s
$ wget https://raw.githubusercontent.com/ubuntu/microk8s/master/tests/lxc/microk8s-zfs.profile -O microk8s.profile
$ cat microk8s.profile | lxc profile edit microk8s
$ rm microk8s.profile
(c) コンテナ作成と設定内容修正
k8s0の名称でubuntu20.04のコンテナを作成します。
$ lxc launch -p default -p microk8s ubuntu:20.04 k8s0
規定値の設定が大きいので修正をします。
$ lxc stop k8s0
$ lxc config set k8s0 limits.cpu=2
$ lxc config set k8s0 limits.memory=2GiB
$ lxc start k8s0
同様にk8s1も作成します。
d) microk8s導入
k8s0にmicrok8sを導入します
$ lxc exec k8s0 -- sudo snap install microk8s --classic
次にk8s0上に/etc/rc.localを作成します
$ cat << EOF > rc.local
#!/bin/bash
apparmor_parser --replace /var/lib/snapd/apparmor/profiles/snap.microk8s.*
exit 0
EOF
$ lxc file push rc.local k8s0/etc/rc.local
$ lxc exec k8s0 -- sh -c 'chown root.root /etc/rc.local'
$ lxc exec k8s0 -- sh -c 'chmod +x /etc/rc.local'
$ lxc exec k8s0 -- sh -c 'reboot'
$ rm rc.local
同様にk8s1にもmicrok8sを導入します
(e) node追加
k8s0にk8s1を接続します
$ lxc exec k8s0 microk8s add-node | tail -n1 | xargs lxc exec k8s1
(f) 試験
試験できる環境ができたので、必要な試験をします。
参考
[外部サイト参照]
・The lightweight Kubernetes
コメント
コメントを投稿