MacとUbuntuのMicroK8sノードからクラスタを作成する
1.MicroK8sでクラスタを構築したい
Mac と Ubuntu マシンに MicroK8sをそれぞれインストール
して、クラスタを構成したい。
https://microk8s.io/docs/clustering
のだが、手順通りに素直ににやるもエラー
お互いのMicroK8sが通信できていない。
2.理由はUbuntu側のMicoroK8sからMacのMicroK8sが見えていない
MacのMicroK8sは、multipass に管理された、hyperkt にインストールされたUbuntuに構成される。
multipassは、仮想マシン管理ツール
$ multipass ls Name State IPv4 Image microk8s-vm Running 192.168.64.2 Ubuntu 18.04 LTS
こんな感じで、multipass に管理された仮想マシンに、Ubuntuがインストールされて、いることがわかる。
multipass の shellコマンドでmicorok8s-vmインスタンスにログインできる
$ multipass shell microk8s-vm Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-122-generic x86_64) : ubuntu@microk8s-vm:~$
で、Macの中のMicroK8sと別マシンのUbuntuのMicoroK8sでクラスタを作るには、Hostにしたい側で、microk8s add-node コマンドを叩いて、表示された、joinコマンドを参加させたい側で実行するようなのだが、このMacの中の microk8s-vm 仮想マシンに外部のUbuntuマシンからアクセスできなくお互い通信できないのでタイムアウトなどjoinが失敗する。
ブリッジネットワークが構成できれば良いのだろうご思うのだが、できない。。。
2、3日いろいろ手を尽くすしてみるが無理
ブリッジネットワークの構成が主題でなはいので諦める。
3.multipass の local.driver を VirtualBoxに変更
いろいろ調べているうちに、multipass のドライバをhyper kit から、VirtualBoxに変更できるようだが、
Virtual Box でブリッジ接続は、昔からやっている のでなんとかなるだろう。
こちらの手順に切り替え
https://multipass.run/docs/using-virtualbox-in-multipass-macos
brew で Virtual Boxをインストール
$ brew cask install virtualbox
3.1 multipass のドライバを切り替え
現在のドライバを確認
$ sudo multipass get local.driver hyperkit
現在のVMを削除
$ multipass delete microk8s-vm $ multipass purge
Virtual Boxに切替え、MicoroK8sの再インストール
$ sudo multipass set local.driver=virtualbox $ microk8s install $ sudo VBoxManage list vms Password: "microk8s-vm" {d90718db-3795-4116-825f-cffe4a2f0fea}
3.2 ネットワークブリッジを生成
$ VBoxManage list bridgedifs | grep ^Name: Name: en0: Wi-Fi (AirPort) Name: en1: Thunderbolt 1 Name: bridge0 Name: p2p0 Name: awdl0 Name: llw0 $ sudo VBoxManage modifyvm microk8s-vm --nic2 bridged --bridgeadapter2 en0
インスタンスを立ち上げて新しいNICの名前(enp0s8)を取得
$ multipass exec microk8s-vm -- ip link | grep DOWN 3: enp0s8: mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
enp0s8に設定、反映する。
$ multipass exec microk8s-vm -- sudo bash -c "cat > /etc/netplan/60-bridge.yaml" <<EOF network: ethernets: enp0s8: # this is the interface name from above dhcp4: true dhcp4-overrides: # this is needed so the default gateway route-metric: 200 # remains with the first interface version: 2 EOF $ multipass exec microk8s-vm -- sudo netplan apply
IPアドレスを確認
$ multipass exec microk8s-vm -- ip address show dev enp0s8 up 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:3a:92:dd brd ff:ff:ff:ff:ff:ff inet 192.168.0.40/24 brd 192.168.0.255 scope global dynamic enp0s8 valid_lft 86331sec preferred_lft 86331sec inet6 2402:6b00:3666:5800:a00:27ff:fe3a:92dd/64 scope global dynamic mngtmpaddr noprefixroute valid_lft 266sec preferred_lft 266sec inet6 fe80::a00:27ff:fe3a:92dd/64 scope link valid_lft forever preferred_lft forever
$ sudo VirtualBox で起動。microk8s-vm に ブリッジアダプターが生成されている!!
3.3 確認
お互いにpingが通った!
コミュニケーションできるノードがadd-nodeに表示された。
4.クラスタの作成
4.1 ノード接続コマンドの確認
$ microk8s add-node From the node you wish to join to this cluster, run the following: microk8s join 10.0.2.15:25000/136ac2967078d5490de2d1a2d3a8bf52 If the node you are adding is not reachable through the default interface you can use one of the following: microk8s join 10.0.2.15:25000/136ac2967078d5490de2d1a2d3a8bf52 microk8s join 192.168.0.40:25000/136ac2967078d5490de2d1a2d3a8bf52
4.2 join!!
$ microk8s join 192.168.0.47:25000/1c3d59551648b6da13ccbca9cf1a0fad Contacting cluster at 192.168.0.47 Waiting for this node to finish joining the cluster. .. delhi:~ hirotoyagi$ kubectl get node NAME STATUS ROLES AGE VERSION jinmu Ready 3d16h v1.19.3-34+a56971609ff35a microk8s-vm Ready 17s v1.19.3-34+9e8b6537ec8b6f
ようやくクラスタ作成できた!!! ながかった。
参考
- https://discourse.ubuntu.com/t/troubleshooting-networking-on-macos/12901#arp-problems
- https://hnakamur.github.io/blog/2020/05/25/change-macos-hypervisor.framework-vm-subnet-ip-address/
- https://microk8s.io/docs/high-availability https://askubuntu.com/questions/1263043/cannot-access-an-ubuntu-guest-vm-running-under-multipass-on-an-ubuntu-host-from https://qiita.com/ynott/items/be8810f83d1db6f4540b
- https://discourse.ubuntu.com/t/troubleshooting-networking-on-macos/12901
- https://tech.virtualtech.jp/entry/2019/10/25/150802
- https://www.virtualbox.org/manual/ch06.html#network_bridged