なぜ従来のK8sやMinikubeではなくMicroK8sを選ぶのか?
もし、Kubernetesをインストールするためにkubeadmと格闘したことがあるなら、大量のTLS証明書や複雑なネットワーク構成を管理する大変さがわかるでしょう。Ubuntu上で検証環境や開発環境を構築する場合、迅速で軽量、かつシステムを汚さないツールが必要です。その答えがMicroK8sです。また、システムを常に快適に保つためにパフォーマンス最適化を行うことも重要です。
多くの人は慣れ親しんだMinikubeを選びがちです。しかし、Canonicalが提供するMicroK8sは、Ubuntuとの親和性が抜群です。重い仮想マシン(VM)層を介して実行するのではなく、軽量仮想化のようにホスト上で直接動作するため、起動直後で約1〜2GBのRAMを節約できます。私は実際に2 vCPUと4GB RAMしかない格安VPSでこのクラスターを動かしてみましたが、システムは非常にスムーズにレスポンスを返してくれました。
MicroK8sの強みは「Zero-ops」という理念にあります。ダッシュボードからIngressまで、あらゆるコンポーネントがパッケージ化されています。GitHubでYAMLファイルを探し回る必要はなく、コマンド一つで有効化できます。
環境準備
Ubuntuマシンが必要です(20.04から24.04のバージョンが最適です)。ハードウェアに関しては、少なくとも4GBのRAMを確保してください。これ未満で実行すると、アプリケーションをデプロイした際にシステムPodが簡単にOOM (Out of Memory)状態に陥ってしまいます。
ステップ1:Snapによるインストール
MicroK8sはSnapを通じて公式に配布されており、アップデートやバージョン管理が非常に簡単です。
このプロセスは、ネットワーク速度にもよりますが、通常2分もかかりません。
ステップ2:アクセス権限の設定
コマンドを実行するたびにsudoを打たなくて済むように、現在のユーザーをMicroK8sの管理グループに追加します。
sudo usermod -a -G microk8s $USER
sudo chown -f -R $USER ~/.kube
newgrp microk8s
newgrpコマンドを使用することで、マシンを再起動することなく即座に新しい権限を適用できます。
ステップ3:ステータスの確認
コアサービスが稼働準備できているか確認しましょう。
microk8s status --wait-ready
画面に「microk8s is running」と表示されれば、シングルノードのK8sクラスターが正式に稼働したことになります。
アドオンの有効化:MicroK8sを本格的なK8sクラスタへ
デフォルトでは、MicroK8sはシステムを軽量に保つために最小限の構成のみをインストールします。実際の作業を行うには、アドオン機能を有効にする必要があります。
必須のアドオン
私はあらゆる検証プロジェクトにおいて、以下の4つのコンポーネントを優先的に導入しています。
- DNS: 内部サービス同士がIPではなく名前で通信できるようにします。
- Storage: データの永続化(Persistent Volume)を可能にします。
- Ingress: 外部からのトラフィックを内部サービスへルーティングするゲートウェイです。
- Dashboard: リソースを監視するための直感的なWebインターフェースです。
microk8s enable dns storage ingress dashboard
Tips:kubectlのエイリアスを作成する
毎回microk8s kubectlと入力するのは手間がかかります。より効率的に操作するためにエイリアスを作成しましょう。併せてターミナルをZshなどで強化すれば、開発効率がさらに向上します。
echo "alias kubectl='microk8s kubectl'" >> ~/.bashrc
source ~/.bashrc
Nginxアプリのテストデプロイ
システムを検証するために、Nginxウェブサーバーを起動し、NodePort経由で外部に公開してみます。
# 2つのレプリカでデプロイメントを作成
kubectl create deployment web-demo --image=nginx --replicas=2
# コンテナの80番ポートをホストマシンのランダムなポートに公開
kubectl expose deployment web-demo --type=NodePort --port=80
kubectl get servicesコマンドを使用して、作成されたポート(通常は3xxxxの範囲)を確認します。ブラウザを開き、localhost:3xxxxにアクセスすると、Nginxのウェルカムページが表示されるはずです。
運用における実践的なTips
UbuntuでMicroK8sを長期間運用してきた中で、不要なファイルの削除といったメンテナンスを含め、いくつか重要な注意点を紹介します。
- ファイアウォールの競合: これは最も一般的なエラーです。Podがインターネットに接続できない場合は、UFWを確認してください。以下のコマンドで
cni0インターフェースのトラフィックを許可する必要があります:sudo ufw allow in on cni0 && sudo ufw allow out on cni0。 - ストレージの掃除: Snapは古いバージョンを保存し続けるため、ディスク容量を圧迫することがあります。
snap set system refresh.retain=2を実行して、保存されるバージョン数を制限し、数ヶ月後にディスクがいっぱいになるのを防ぎましょう。 - スリープ時の対応: ノートPCを使用しており、頻繁に画面を閉じる(スリープさせる)場合、MicroK8sの内部ネットワーク接続が切れることがあります。最も手っ取り早い解決策は、サービスの再起動です:
microk8s stop && microk8s start。
Kubernetesの導入は、必ずしも複雑なプロセスである必要はありません。MicroK8sを使えば、インフラに煩わされることなく、アプリケーションのパッケージ化に完全に集中できます。皆さんのラボ構築の成功を祈っています!

