特筆して書くことはありませんが、これでmicrok8s関連が使用可能になります。
https://microk8s.io/docs/getting-started を参考にインストールを進めます。
$ sudo snap install microk8s --classic --channel=1.32
$ set myuser (id -un)
$ sudo usermod -a -G microk8s $myuser
$ microk8s start
$ microk8s status
microk8s is running
high-availability: no
datastore master nodes: 127.0.0.1:19001
datastore standby nodes: none
addons:
enabled:
ha-cluster # (core) Configure high availability on the current node
helm # (core) Helm - the package manager for Kubernetes
helm3 # (core) Helm 3 - the package manager for Kubernetes
disabled:
cert-manager # (core) Cloud native certificate management
cis-hardening # (core) Apply CIS K8s hardening
community # (core) The community addons repository
dashboard # (core) The Kubernetes dashboard
dns # (core) CoreDNS
gpu # (core) Alias to nvidia add-on
ingress # (core) Ingress controller for external access
host-access # (core) Allow Pods connecting to Host services smoothly
hostpath-storage # (core) Storage class; allocates storage from host directory
kube-ovn # (core) An advanced network fabric for Kubernetes
mayastor # (core) OpenEBS MayaStor
metallb # (core) Loadbalancer for your Kubernetes cluster
metrics-server # (core) K8s Metrics Server for API access to service metrics
minio # (core) MinIO object storage
nvidia # (core) NVIDIA hardware (GPU and network) support
observability # (core) A lightweight observability stack for logs, traces and metrics
prometheus # (core) Prometheus operator for monitoring and logging
registry # (core) Private image registry exposed on localhost:32000
rbac # (core) Role-Based Access Control for authorisation
rook-ceph # (core) Distributed Ceph storage using Rook
storage # (core) Alias to hostpath-storage add-on, deprecated
$ set IPADDR (ip a show wlp3s0 | grep inet | grep -v inet6 | head -1 | awk '{print $2}' | cut -f1 -d/)
$ sudo sed -i.bak "s/#MOREIPS/IP.3 = "$IPADDR"\\nDNS.6 = localhost\\n/g" /var/snap/microk8s/current/certs/csr.conf.template
$ echo "--advertise-address "$IPADDR"" | sudo tee -a /var/snap/microk8s/current/args/kube-apiserver
$ echo "--node-ip $IPADDR" | sudo tee -a /var/snap/microk8s/current/args/kubelet
# $ sudo vim /var/snap/microk8s/current/certs/csr.conf.template で CN = 192.168.8.101 に変更している
# $ sudo vim /var/snap/microk8s/current/args/kubelet で --bind-adderssがあれば削除
$ sudo microk8s refresh-certs --cert ca.crt
$ sudo snap restart microk8s
$ microk8s kubectl config view --raw > .kube/config
$ microk8s stop
$ microk8s start
$ set N 1
$ set base (echo $IPADDR | awk -F '.' '{print $1 "." $2 "." $3}')
$ set start (math $N "*" 10 "+" 210)
$ set end (math $N "*" 10 "+" 219)
$ microk8s enable rbac
$ microk8s enable dns
$ microk8s enable hostpath-storage
$ microk8s enable dashboard
$ microk8s enable metallb:$base.$start-$base.$end
$ microk8s status
microk8s is running
high-availability: no
datastore master nodes: 127.0.0.1:19001
datastore standby nodes: none
addons:
enabled:
dashboard # (core) The Kubernetes dashboard
dns # (core) CoreDNS
ha-cluster # (core) Configure high availability on the current node
helm # (core) Helm - the package manager for Kubernetes
helm3 # (core) Helm 3 - the package manager for Kubernetes
host-access # (core) Allow Pods connecting to Host services smoothly
hostpath-storage # (core) Storage class; allocates storage from host directory
ingress # (core) Ingress controller for external access
metallb # (core) Loadbalancer for your Kubernetes cluster
rbac # (core) Role-Based Access Control for authorisation
storage # (core) Alias to hostpath-storage add-on, deprecated
disabled:
cert-manager # (core) Cloud native certificate management
cis-hardening # (core) Apply CIS K8s hardening
community # (core) The community addons repository
gpu # (core) Alias to nvidia add-on
kube-ovn # (core) An advanced network fabric for Kubernetes
mayastor # (core) OpenEBS MayaStor
metrics-server # (core) K8s Metrics Server for API access to service metrics
minio # (core) MinIO object storage
nvidia # (core) NVIDIA hardware (GPU and network) support
observability # (core) A lightweight observability stack for logs, traces and metrics
prometheus # (core) Prometheus operator for monitoring and logging
registry # (core) Private image registry exposed on localhost:32000
rook-ceph # (core) Distributed Ceph storage using Rook
これで起動完了です。他に必要なAddOnがあれば同様にOnにしていけばOKです。このmicrok8sを使用した場合、kubectl単独で使うことができなくなります。(cniとの通信がエラーになるため)
以下の方法でmicrok8sを停止することが可能です。
$ microk8s stop
以下の方法でmicrok8sをリセットすることが可能です。
$ microk8s reset
リセット後は microk8s start からやり直せばOKです。
microk8sでは以下のディレクトリが使用されてるようで、永続化しているボリュームもこの中に作成されます。また、sudoをつけて起動している場合は内部ディレクトリの権限がroot:rootとなっている場合があるようなので、適宜 chown -R root:microk8s を付与すると良いです。