admin に投稿
ubuntu

MicroK8s

 

構成

マスタ: mk8s0(mk8s: ワーカー用コンテナのひな型)
ワーカー:mk8s1,mk8s2,mk8s3

LXD

インストール

$ sudo snap install lxd

初期化

初期化はすべてデフォルト。

$ sudo lxd init

ウェブUI

$ snap set lxd ui.enable=true
$ snap restart --reload lxd
$ sudo lxc config set core.https_address "[::]:8443"

https://localhost:8443

詳細設定/localhost にアクセスする(安全ではありません)

  1. Generate certificate クリック
  2. Generate and download
  3. chrome://certificate-manager
  4. ユーザーの証明書
    linuxからインポートした証明書を表示する/インポート
  5. ダウンロードフォルダ内のlxd-ui-localhost.pfxを選択
    パスワードは空→OK
    ブラウザを閉じる
    証明書の選択→OK

https://localhost:8443

$ sudo lxc auth identity create tls/lxd-ui --group admins

トークンを貼り付ける
Connect

LXC

インストール

$ sudo apt-get install lxc

 

MicroK8s

プロファイル作成

$ wget https://raw.githubusercontent.com/ubuntu/microk8s/master/tests/lxc/microk8s.profile -O microk8s.profile
$ sudo lxc profile create mk8s
$ cat microk8s.profile | sudo lxc profile edit mk8s
$ rm microk8s.profile

コンテナ生成

$ sudo lxc launch -p default -p mk8s ubuntu:24.04 mk8s0
$ sudo lxc exec mk8s0 -- snap install microk8s --classic
$ sudo lxc exec mk8s0 -- microk8s status --wait-ready

 

アクセス権限

$ sudo lxc shell mk8s0
# usermod -a -G microk8s $USER
# cat /etc/group | grep microk8s
  microk8s:x:1001:root
# chown -f -R $USER ~/.kube
# ll -l ~/ | grep kube
  drwxr-x---  3 root root    3 Jan 15 05:20 .kube/
# exit
logout

再度ログイン。

$ sudo lxc shell mk8s0
#

 

kubectl

# snap alias microk8s.kubectl kubectl
Added:
  - microk8s.kubectl as kubectl

 

AppAromerプロファイルの適用

# cat > /etc/rc.local <<EOF
#!/bin/bash
apparmor_parser --replace /var/lib/snapd/apparmor/profiles/snap.microk8s.*
exit 0
EOF
# chmod +x /etc/rc.local
# exit
logout

イメージの保存

$ sudo lxc stop mk8s0
$ sudo lxc publish mk8s0 --alias mk8s
$ sudo lxc start mk8s0
$ sudo lxc image edit mk8s
プロファイルの編集が始まるので最終行に以下を追記してmk8s用のプロファイルをデフォルトで適用するようにしておきます。
- mk8s
$ sudo lxc launch mk8s mk8s1
Launching mk8s1
$ sudo lxc exec mk8s1 -- microk8s status --wait-ready | head -n4
microk8s is running
high-availability: no
datastore master nodes: 127.0.0.1:19001
datastore standby nodes: none

 

$ sudo lxc launch mk8s mk8s2
Launching mk8s2
$ sudo lxc exec mk8s2 -- microk8s status --wait-ready | head -n4
microk8s is running
high-availability: no
datastore master nodes: 127.0.0.1:19001
datastore standby nodes: none

 

$ sudo lxc launch mk8s mk8s3
Launching mk8s3
$ sudo lxc exec mk8s3 -- microk8s status --wait-ready | head -n4
microk8s is running
high-availability: no
datastore master nodes: 127.0.0.1:19001
datastore standby nodes: none


クラスタリング

$ sudo lxc exec mk8s0 -- microk8s add-node
From the node you wish to join to this cluster, run the following:
microk8s join 10.116.214.200:25000/5c1093b09cb55c249e93c8c756c85b25
$ sudo lxc exec mk8s1 -- microk8s join 10.116.214.200:25000/5c1093b09cb55c249e93c8c756c85b25
Contacting cluster at 10.116.214.200
Waiting for this node to finish joining the cluster. .. .. .. ..
Successfully joined the cluster.

 

$ sudo lxc exec mk8s0 -- microk8s add-node
From the node you wish to join to this cluster, run the following:
microk8s join 10.218.5.72:25000/2501b3cfede8ef217e936761fae1112e/6a72d40c5862
$ sudo lxc exec mk8s2 -- microk8s join 10.218.5.72:25000/2501b3cfede8ef217e936761fae1112e/6a72d40c5862 
Contacting cluster at 10.218.5.72
Waiting for this node to finish joining the cluster. .. .. .. ..  
Successfully joined the cluster.

 

$ sudo lxc exec mk8s0 -- microk8s add-node 
From the node you wish to join to this cluster, run the following:
microk8s join 10.218.5.72:25000/d532338304793fca498377bfe58113a5/6a72d40c5862
$ sudo lxc exec mk8s3 -- microk8s join 10.218.5.72:25000/d532338304793fca498377bfe58113a5/6a72d40c5862
Contacting cluster at 10.218.5.72
Waiting for this node to finish joining the cluster. .. .. .. ..  
Successfully joined the cluster.


確認

$ sudo lxc exec mk8s0 -- kubectl get nodes -o wide
NAME    STATUS   ROLES    AGE     VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
mk8s0   Ready    <none>   51m     v1.32.9   10.218.5.72    <none>        Ubuntu 24.04.3 LTS   6.14.0-37-generic   containerd://1.6.36
mk8s1   Ready    <none>   13m     v1.32.9   10.218.5.249   <none>        Ubuntu 24.04.3 LTS   6.14.0-37-generic   containerd://1.6.36
mk8s2   Ready    <none>   5m51s   v1.32.9   10.218.5.188   <none>        Ubuntu 24.04.3 LTS   6.14.0-37-generic   containerd://1.6.36
mk8s3   Ready    <none>   61s     v1.32.9   10.218.5.221   <none>        Ubuntu 24.04.3 LTS   6.14.0-37-generic   containerd://1.6.36
$ sudo lxc shell mk8s0
# microk8s status --wait-ready
microk8s is running
high-availability: yes
 datastore master nodes: 10.218.5.72:19001 10.218.5.249:19001 10.218.5.188:19001
 datastore standby nodes: 10.218.5.221:19001
 
...

 

アドオン

(必要なアドオンのみenable)

$ sudo lxc shell mk8s0
# microk8s enable dashboard
# microk8s enable dns
# microk8s enable ingress
# microk8s enable metallb
# microk8s enable metrics-server
# microk8s enable multus
# microk8s enable rbac
# microk8s enable registry
# microk8s enable storage
# microk8s status --wait-ready
# exit