minikube だと不便なこと
最近は何かと人気の kubernetes(k8s)、便利ではあるものの、セットアップは結構大変です。このため、開発環境としては GKE などの Public Cloud や、手元の PC/Mac 上にインストールした minikube を使っている人が多いと思います。
手元の Mac 等で開発をする場合は minikube さえあればそれほど困らないかもしれませんが、アプリの規模が大きくなると CPU性能、memory や disk 等のリソースが不足してしまい、結局は Public Cloud 上に開発環境を構築することも多いと思います。
このような場合、IaaS 上になるべくお金をかけずに開発環境を作るのであれば minikube を vm-driver=none にして1台構成クラスタを作ることも可能ではありますが、microk8s を使えばもっとお手軽に環境を作れてしまいます。
microk8s: Kubernetes for workstations and appliances
microk8s で解決できること
microk8s を使うと、次のようなことが便利になります。
- snap コマンド1発、1-2分程度で single host な kubernetes が使えるようになります
- snap コマンド1発でアンインストールができ、依存パッケージも含めて完全に clean up できます
microk8s インストール方法
次のコマンドを入力するだけで、kubernetes が使える状態になります。とても簡単です。
sudo snap install microk8s --classic
microk8s アンインストール方法
microk8s のアンインストールも、とても簡単にできます。snap によりパッケージングされているため、アンインストールすれば依存パッケージも含めて、綺麗さっぱりファイルが削除されます。
sudo snap remove microk8s
microk8s 停止方法
microk8s では、一時的に kubernetes を使わない際は停止することでリソース消費を抑えることができます。
microk8s.stop
microk8s 再開方法
microk8s.stop にて停止させた kubernetes を再開したい場合は、次のコマンドを実行します。
microk8s.start
microk8s 初期設定
基本的には初期設定をしなくても kubernetes が利用できる状態になっていますが、次のコマンドを入れておくと、より便利に使えます。
# microk8s.kubectl に alias を張って、kubectl コマンドとして使えるようにする
sudo snap alias microk8s.kubectl kubectl
# DNS(kibe-dns) を有効化します
microk8s.enable dns
# Storage Class を有効化します
microk8s.enable storage
# kubectl の補完機能を有効化します (ubuntu / bash の場合)
sudo apt install bash-completion
echo "source <(kubectl completion bash)" >> ~/.bashrc
source ~/.bashrc
# Pod からインターネットへ通信したい場合に iptables を設定します
sudo iptables -P FORWARD ACCEPT
さいごに
microk8s を使うと、例えばあまり稼働していないツール系のホスト等をお手軽に開発環境へ仕立てることができ、終わればキレイさっぱりと cleanup することもできます。また、ingress や istio 等についても microk8s.enable コマンドにて有効化することもできるため、プロダクション環境と同等の動作をする開発環境を作るのにとても向いています。
microk8s をまだ使ったことのない人は、是非ご活用されると良いと思います。
2019年4月の Kubernetes Meetup Tokyo #18 でも Canonical さんがデモを交えた紹介をされていたので、下記にリンクを共有させていただきます。
とある30秒でできる Full Kubernetes + Istio 環境 - Kubernetes Meetup Tokyo #18