仮想化通信

日本仮想化技術株式会社の公式エンジニアブログ

microk8sを触ってみた

ちょっとKubernetesを触りたいときの手段は色々ありますが、microk8sも割と便利なので、簡単な使い方をまとめてみたいと思います。

microk8s.io

インストール方法は簡単で、Ubuntuをインストールして sudo snap install microk8s --classic を実行するだけです。バージョンを指定したい場合は sudo snap install microk8s --classic --channel=1.15/stable のように指定します。現在、channelオプションを指定しない場合は1.16.0がデプロイされるようです。1.16.0にはいくつか問題があるのですが、1.16/betaで1.16.1が、1.16/edgeで1.16.2がリリースに向けて進行中なので、いずれ修正されるものと思います(なので、普段は1.15.5を使っています)。

microk8sにはアドオンというものがあって、コマンド1つでいろいろな機能をKubernetesに組み込んで使うことができるようです。 例えば以前、NVIDIA GPUとCUDAを使ってGPUコンテナーなんてものを試したことがあります。

NVIDIA GPUの実装とCUDA Driver、GPU Driverは導入済みである必要がありますが、これも割と短時間で簡単に構築できるのが魅力です。目的が本番利用ではなくてKubernetes PodでGPUを使いたいだけであれば、microk8sは割と良い選択肢である気がします(使わない時はmicrok8s.stopしておけばいいので)。

tech.virtualtech.jp

microk8sでKubernetes Dashboardを使う

私がよく使うmicrok8sのセットアップ方法を例示してみます。コマンド3つで終了です。

$ sudo snap install microk8s --classic --channel=1.15/stable
$ sudo microk8s.enable dashboard dns storage
$ sudo usermod -a -G microk8s ubuntu

公式のドキュメントにもありますが、Kubeconfigは次の方法で出力することができます。

$ microk8s.kubectl config view --raw > /home/kubeconfig

このKubeconfigを確認すると「server: https://127.0.0.1:16443」と記述されている(元々1ノードKubernetesを簡単にセットアップできるツールな)ので、microk8sノードのIPアドレスに書き換えます。

あとはこのKubeconfigのファイルを手元の環境の ~/.kube/config に書き込めばCLIでKubernetesノードにアクセスできます。

Kubernetes Dashboardを使うには次のように行います。

microk8sノードで実行

% microk8s.kubectl proxy &

手元環境で実行

% kubectl proxy &

このように実行したら、次のURLでアクセスします。

ただ、K8s 1.16からDashboardのエンドポイントが変わったようなので、注意が必要です。

kubectl proxy を実行すると、手元の環境でブラウザーを使ってKubernetes Dashboardにアクセスできます。

ログインするには

次のようにコマンドを実行して表示されるkubernetes-dashboard-tokenのトークンキーを使うとアクセスできるようです。

$ microk8s.kubectl -n kube-system describe secret   $(microk8s.kubectl -n kube-system get secret | grep kubernetes-dashboard-token | awk '{print $1}')

調べたトークンキーをコピペします。

f:id:virtualtech:20191017140122p:plain

「サインイン」ボタンをクリックするとアクセスできます。

f:id:virtualtech:20191017135505p:plain
microk8sのKubernetes Dashboardにアクセス

microk8sはちょっとKubernetesを使いたい場合や、CI/CDのパーツの1つとしての利用したいとき、Kubernetesのバージョンによる挙動の違いなどを調べたいとき(例えばこういう時)に便利かなと思いました。