ローカル環境にKubernetesを構築する(Minikube)

Kubernetes (k8s) とは

Kubernetes(通称k8s)は、コンテナ化されたアプリケーションのデプロイ、スケーリング、および管理を自動化するためのオープンソースプラットフォームです。

  • ノード: コンテナが実際に動作する物理または仮想マシンです。
  • マスターノード: クラスター全体を管理し、コンテナのデプロイやスケーリングなどを制御します。
  • クラスター: 複数のノード(マスターノードとワーカーノード)の集合体で、Kubernetesの管理単位となります。

Minikube

Minikubeは、SIG-Cluster-Lifecycle(Kubernetesのコミュニティグループ)によって開発されたツールで、ローカル環境に簡単に単一ノードのKubernetesクラスターを構築・実行できます。開発やテスト目的でKubernetesを試すのに最適です。

Minikubeは、ローカルの仮想マシン(VM)やコンテナ内にKubernetes環境を構築・実行するため、ハイパーバイザー(VMware Fusion, VirtualBox, Hyper-Vなど)またはコンテナランタイム(Docker, Podmanなど)が必要です。Minikubeは、これらのドライバーを使用して自動的にホスト環境をセットアップし、その上にKubernetesをデプロイします。

M1 Macにおける注意点: 以前はM1 Macでのハイパーバイザーの選択肢が限られていましたが、現在はDocker DesktopがM1 Macにネイティブ対応しており、MinikubeのDockerドライバーを利用することで問題なく動作します。

Minikubeのインストール

Homebrew(macOSの場合)を使用してMinikubeをインストールします。

brew install minikube

このコマンドは、Minikubeだけでなく、Kubernetesクラスターを操作するためのコマンドラインツールである kubectl も同時にインストールします。

Minikubeを使用してKubernetes環境を構築する

minikube start コマンドを実行すると、MinikubeがローカルにKubernetesクラスターを起動します。

minikube start

初回起動時には、必要なイメージのダウンロードやクラスターのセットアップが行われるため、時間がかかる場合があります。

Contextの切り替え

複数のKubernetesクラスターを利用している場合、kubectl がどのクラスターを操作するかを指定するためにContextを切り替える必要があります。Minikubeを起動すると、自動的にMinikubeクラスターのContextが設定されます。

kubectl config use-context minikube

ノードの確認

クラスターが正常に起動しているか、ノードの状態を確認します。

kubectl get nodes

minikube という名前のノードが Ready 状態であれば、クラスターは正常に動作しています。

Minikubeクラスターの削除

Minikubeクラスターを停止し、関連するリソースを削除するには、minikube delete コマンドを使用します。

minikube delete

これにより、Minikubeが作成した仮想マシンやコンテナ、関連ファイルがクリーンアップされます。

参考