本番環境での運用に対応している MicroK8s
を Ubuntu 22.04
ホストマシンにインストール
MicroK8sのインストール(snap)
$ sudo snap install microk8s --classic
microk8s (1.25/stable) v1.25.2 from Canonical✓ installed
アドオンの有効化
$ sudo microk8s enable dns dashboard storage
アドオンの確認
$ sudo microk8s status --wait-ready
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
hostpath-storage # (core) Storage class; allocates storage from host directory
metrics-server # (core) K8s Metrics Server for API access to service metrics
storage # (core) Alias to hostpath-storage add-on, deprecated
disabled:
cert-manager # (core) Cloud native certificate management
community # (core) The community addons repository
gpu # (core) Automatic enablement of Nvidia CUDA
host-access # (core) Allow Pods connecting to Host services smoothly
ingress # (core) Ingress controller for external access
kube-ovn # (core) An advanced network fabric for Kubernetes
mayastor # (core) OpenEBS MayaStor
metallb # (core) Loadbalancer for your Kubernetes cluster
observability # (core) A lightweight observability stack for logs, traces and metrics
prometheus # (core) Prometheus operator for monitoring and logging
rbac # (core) Role-Based Access Control for authorisation
registry # (core) Private image registry exposed on localhost:32000
グループ micro8ks
に現ユーザを追加、~/.kube
へのアクセス権を付与(再ログイン後有効)
$ sudo usermod -a -G microk8s $USER
$ sudo chown -f -R $USER ~/.kube
microk8s
のkubectl
のみを使用する場合には下記エイリアスを設定(ログアウトすると無効)
常時有効にするためには ~/.bashrc
に追加すること。
$ alias kubectl='microk8s kubectl'
ダッシュボードへのアクセス(URLの確認)
kube-system service/kubernetes-dashboard
のIPアドレスとポートを確認してアクセス
$ sudo microk8s kubectl get all --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system pod/calico-node-hfgdq 1/1 Running 3 (102m ago) 3h30m
kube-system pod/calico-kube-controllers-6ff488ffcf-wsrzb 1/1 Running 3 (102m ago) 3h30m
kube-system pod/coredns-d489fb88-2zjdr 1/1 Running 0 49m
kube-system pod/dashboard-metrics-scraper-64bcc67c9c-9c9sw 1/1 Running 0 47m
kube-system pod/metrics-server-6b6844c455-9rczd 1/1 Running 0 47m
kube-system pod/kubernetes-dashboard-74b66d7f9c-flzbd 1/1 Running 0 47m
kube-system pod/hostpath-provisioner-85ccc46f96-gjnkv 1/1 Running 0 47m
ingress pod/nginx-ingress-microk8s-controller-xs4sm 1/1 Running 0 41m
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default service/kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 3h30m
kube-system service/kube-dns ClusterIP 10.152.183.10 <none> 53/UDP,53/TCP,9153/TCP 49m
kube-system service/metrics-server ClusterIP 10.152.183.96 <none> 443/TCP 48m
kube-system service/kubernetes-dashboard ClusterIP 10.152.183.123 <none> 443/TCP 48m
kube-system service/dashboard-metrics-scraper ClusterIP 10.152.183.18 <none> 8000/TCP 48m
NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
kube-system daemonset.apps/calico-node 1 1 1 1 1 kubernetes.io/os=linux 3h30m
ingress daemonset.apps/nginx-ingress-microk8s-controller 1 1 1 1 1 <none> 41m
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
kube-system deployment.apps/calico-kube-controllers 1/1 1 1 3h30m
kube-system deployment.apps/coredns 1/1 1 1 49m
kube-system deployment.apps/dashboard-metrics-scraper 1/1 1 1 48m
kube-system deployment.apps/metrics-server 1/1 1 1 48m
kube-system deployment.apps/kubernetes-dashboard 1/1 1 1 48m
kube-system deployment.apps/hostpath-provisioner 1/1 1 1 48m
NAMESPACE NAME DESIRED CURRENT READY AGE
kube-system replicaset.apps/calico-kube-controllers-54c85446d4 0 0 0 3h30m
kube-system replicaset.apps/calico-kube-controllers-6ff488ffcf 1 1 1 3h30m
kube-system replicaset.apps/coredns-d489fb88 1 1 1 49m
kube-system replicaset.apps/dashboard-metrics-scraper-64bcc67c9c 1 1 1 47m
kube-system replicaset.apps/metrics-server-6b6844c455 1 1 1 47m
kube-system replicaset.apps/kubernetes-dashboard-74b66d7f9c 1 1 1 47m
kube-system replicaset.apps/hostpath-provisioner-85ccc46f96 1 1 1 47m
アクセストークンが必要なのでトークン microk8s-dashboard-token
を読み取ります。
$ sudo microk8s kubectl -n kube-system get secret
NAME TYPE DATA AGE
kubernetes-dashboard-certs Opaque 0 43m
microk8s-dashboard-token kubernetes.io/service-account-token 3 43m
kubernetes-dashboard-csrf Opaque 1 43m
kubernetes-dashboard-key-holder Opaque 2 43m
またはトークンを作成します (MicroK8s 1.24 以降)
$ microk8s kubectl create token default --duration=2h
kubectl create token reference
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#-em-token-em-
下記手順で表示されるトークンをダッシュボードの初期画面の既定箇所にコピーペーストして下さい。
$ token=$(sudo microk8s kubectl -n kube-system get secret | grep microk8s-dashboard-token | cut -d " " -f1)
$ sudo microk8s kubectl -n kube-system describe secret $token
.....
.....
token: mNj99xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
7z7g
Note) kubeconfig
を指定する場合、~/.kube/config
を入力します。~/.kube/config
ファイルは $ microk8s config
コマンドで作成されます。
ホストのポートをフォワーディングしてアクセスすることも出来ます。
$ microk8s kubectl port-forward -n kube-system service/kubernetes-dashboard 10443:443
上記コマンドでは、アクセスはローカルマシン限定となります。
外部からアクセスするためには、オプションで --address 0.0.0.0
を追加します。
URL : https://127.0.0.1:10443/
または以下の microk8s
のコマンドでもダッシュボードへのアクセスは可能です(こちらは外部からデフォルトでアクセスできます)。
$ microk8s dashboard-proxy
Checking if Dashboard is running.
Infer repository core for addon dashboard
Waiting for Dashboard to come up.
Trying to get token from microk8s-dashboard-token
Waiting for secret token (attempt 0)
Dashboard will be available at https://127.0.0.1:10443
Use the following token to login:
eyJhbGciOiJSUzI.......................................
..............................................................
...............................................................SyrQg