MicroK8sを使ってみたら意外と便利であったというお話し
この記事はYAMAPアドベントカレンダー2日目の記事です。
はじめに
はじめまして。YAMAPでインフラエンジニアをやっております甲斐と申します。
エンジニアの傍ら、熊本県の南阿蘇村にてお米もBuild and Deployしている百姓エンジニアです。
最近noteを始めましたので、よろしければそちらも御覧ください。
さて本題ですが、私は普段Macで開発を行っており、ローカルでKubernetes環境を構築する際はDocker DesktopのKubernetesを使用してきました。
特に不満を感じたことはなかったのですが、先日自宅サーバのUbuntuにMicroK8sを入れてみたところ意外と便利であったので、今回はそのお話を書きたいと思います。
MicroK8sとは
MicroK8sとは、ローカルで実行するように設計された軽量のKubernetesディストリビューションです。
Ubuntuの開発元として有名なCanonical社によって開発されています。
同様なものとして、minikubeやK3sなどがあります。
本家サイトに比較記事が掲載されていますので、ご興味ある方はご参照ください。
インストール
今回のローカル環境はMacになります。Macのバージョンは以下のとおりです。
Linux/WindowsなどMac以外な方は本家サイトのインストールページをご参照ください。
また、最初に書いておくと、Mac環境でうまくインストールできないなどありましたら以下の記事が参考になりますのでご参照ください。
それではインストールしていきたいと思います。MacではHomebrewよりインストールできます。
% brew install ubuntu/microk8s/microk8s
次に、microk8s install
コマンドを実行してMicroK8sクラスタ環境を構築します。
この際、multipassをインストールするか聞かれれる場合は一緒に入れておきます。
「multipassって何?」と思われた方は、こちらなどをご参照ください。
% microk8s install
Support for 'multipass' needs to be set up. Would you like to do that now? [y/N]: y
:
MicroK8sクラスタのコンフィグファイルを作成します。
今回は既存環境 (Docker Desktop) とは分けて管理したかったので、作業用ディレクトリ (microk8s-demo) を作成してその中で実行します。
% mkdir microk8s-demo
% cd microk8s-demo
% mkdir .kube
% microk8s config > .kube/config
% export KUBECONFIG=$PWD/.kube/config
MicroK8sが正常に起動していることを確認できればインストールは完了となります。
% microk8s status
microk8s is running
high-availability: no
datastore master nodes: 127.0.0.1:19001
datastore standby nodes: none
:
MicroK8sの使い方
MicroK8sの使い方はとてもシンプルです。
以下にいくつかコマンドを紹介します。
- クラスタの作成
% microk8s install
- クラスタの削除
% microk8s uninstall
- クラスタの状態
% microk8s status
- クラスタの開始
% microk8s start
- クラスタの停止
% microk8s stop
- kubectl
% microk8s kubectl
その他のオプションは以下の通りです。
% microk8s --help
Usage: microk8s [OPTIONS] COMMAND [ARGS]...
Options:
--help Show this message and exit.
Commands:
install Installs MicroK8s. Use --cpu, --mem, --disk, --channel, and --image to configure your setup.
uninstall Removes MicroK8s
add-node Adds a node to a cluster
addons
config Print the kubeconfig
ctr The containerd client
dashboard-proxy Enable the Kubernetes dashboard and proxy to host
dbctl Backup and restore the Kubernetes datastore
disable Disables running add-ons
enable Enables useful add-ons
helm The helm client
helm3 The helm3 client
images
inspect Checks the cluster and gathers logs
istioctl The istio client
join Joins this instance as a node to a cluster
kubectl The kubernetes client
leave Disconnects this node from any cluster it has joined
linkerd The linkerd client
refresh-certs Refresh the CA certificates in this deployment
remove-node Removes a node from the cluster
reset Cleans the cluster from all workloads
start Starts the kubernetes cluster
status Displays the status of the cluster
stop Stops the kubernetes cluster
version
豊富なアドオン
MicroK8sの便利なところはあらかじめアドオンが豊富に用意されているところです
もちろん、アドオンを使わずとも自分でマニフェストを用意したり、Helmからインストールしたりするれば出来るのですが、はっきり言って面倒です。
MicroK8sではよく使うコンポーネントはあらかじめアドオンという形で用意されているのでコマンドひとつでインストールできます。
例えば、自分でローカル環境にK8sダッシュボードを作成しようとすると以下のような手順を踏むことになるでしょう。
- ダッシュボードUIのデプロイ
% kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
- サービスアカウントの作成
% cat <<. | kubectl apply -f-
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
.
- ClusterRoleBindingの作成
% cat <<. | kubectl apply -f-
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
.
- トークンの作成
% kubectl -n kubernetes-dashboard create token admin-user
eyJhbGciOiJSUzI1NiIsImtpZCI6IjZpRTBzQ2hiZ1RHUVdIaEJSRUVVQ1FEWG10NEg2SnBFcl9nNnpqckFUeDAifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNzAxNTQyOTAyLCJpYXQiOjE3MDE1MzkzMDIsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhZG1pbi11c2VyIiwidWlkIjoiZGIzN2QxYTYtMGE1Ni00ZDFhLTkwZjQtZWYyZjlhOWY4YWY2In19LCJuYmYiOjE3MDE1MzkzMDIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDphZG1pbi11c2VyIn0.MBs3Gi7Nx7SJu-ygvjTBfEFRQtJiFaPct4a0-K3I1I9gOAo4xWMek5saTQhRRHZiFsIi3kdHtJKxnA9-hg59TNkO_4Ti97wNWspLsWLjpyVZtDoh_waByxloRT6FIQQa0Nf1UaNb6rrb7hhIQomMeNQ6CvIRydpzI7nnneAWygF17faxb5Nc6KnhUGeRqBX1TwTa6g0AYTpDbHNLzxy1FyBIn4IBF3ByGLE0q2PPB_Tc7_uPYcPz6S-wCY7COY9qG140ksYbI3c875yMD0hebizYCPw-iizaNntQ3_1MW5FqMxGazAwg6NEZHoa5L7dWjGHE4Ac-l216FakBZcmXdA
- proxyの起動
% kubectl proxy
- ログイン (ログイン画面でトークンを入力)
% oepn http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
ですが、MicroK8sの場合は以下のようにコマンドを打つだけで出来ます。
- ダッシュボードの起動
% microk8s dashboard-proxy
Checking if Dashboard is running.
Infer repository core for addon dashboard
Waiting for Dashboard to come up.
Dashboard will be available at https://192.168.64.2:10443
Use the following token to login:
eyJhbGciOiJSUzI1NiIsImtpZCI6IlBWaE1MYUtWWWZQTEFRRi1kSkNpOXpvRWxINDd2c25yUUNMR2xJcVBtZGcifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJtaWNyb2s4cy1kYXNoYm9hcmQtdG9rZW4iLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGVmYXVsdCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjNlZTEzNGM4LTUyMmYtNDg2Zi1hMGY3LWU2NjVlYmM0Y2VlYyIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTpkZWZhdWx0In0.oB4oHVIS8gcPM8xq_M1OqfnTmu4N3MgZFy15DHLtLi3w4JGCGtDHJ8xb666qh2ezYsfzAeYzm1xyWJK40ke4gS2pFSKruzWkhxX0fRj-S8CiQXFJHa5S_pdbIEf6ggKpk8sj_--Dl9Uy2V5iE4ztOPaltkzQP-r6qxo1nWoiDLWYTRIld35XOFgZCaUsSq7P9x9QPpK_x2P5cU8lOb2whjlBRppslrUqAy_XBqvBvPrn3XgAOI-J2NLJ5uECEfwlMzeCLTQjkF7hzLxfUxBTum4g_oc_hcohcMEEnfJqw95UC57yOhGVb-FDyxBpjDkX4FpeoncG44h69usyZYiaoQ
Forwarding from 0.0.0.0:10443 -> 8443
- ログイン (ログイン画面で
Use the following token to login:
のトークンを入力)
% open https://192.168.64.2:10443
簡単ですね!
後片付け
確認が終わったらMicroK8sクラスタ環境を削除します。
% microk8s uninstall
MicroK8s自体を削除したい場合は以下をアンインストールしてください。
% brew uninstall ubuntu/microk8s/microk8s
% brew uninstall multipass
まとめ
MicroK8sの便利さが少しお分かりいただけましたでしょうか?
ローカルでKubernetes環境を構築する方で、まだMicroK8sを触ったことがなければこの機会にぜひ一度お試しいただければと思います。
こちらの情報がどなたかのお役に立てれば幸いです。
Discussion