【ITニュース解説】Setting Up Kubernetes on Windows with Minikube (Step-by-Step Guide)
2025年09月21日に「Dev.to」が公開したITニュース「Setting Up Kubernetes on Windows with Minikube (Step-by-Step Guide)」について初心者にもわかりやすく解説しています。
ITニュース概要
WindowsでKubernetesの学習・開発環境をMinikubeで構築する手順を紹介。Minikube、kubectl、Dockerをインストールし、ローカルクラスタを起動・検証する。Podの概念を理解し、Nginxアプリケーションをデプロイして動作確認する方法を具体的に解説する。
ITニュース解説
システムエンジニアを目指す皆さんにとって、現代のITインフラを支える重要な技術の一つに「Kubernetes(クバネティス)」がある。Kubernetesは、アプリケーションを動かすためのたくさんのコンピュータ(サーバー)を効率的に管理し、アプリケーションの安定稼働を助けるためのシステムだ。このKubernetesを自分のパソコンで手軽に動かして学習・開発するためのツールが「Minikube(ミニキューブ)」である。この記事では、Windows環境でMinikubeを使ってKubernetesクラスターを構築し、簡単なアプリケーションを動かすまでの手順を解説する。
まず、Kubernetesの世界には様々な管理ツールが存在する。Minikubeは、自分のPC上に単一のノードからなる小規模なクラスターを構築するためのツールで、学習やローカルでの開発に最適だ。他にも、Kind(Kubernetes in Docker)はDockerコンテナ内で軽量なクラスターを構築し、k3sはIoTデバイスやエッジ環境向けの軽量Kubernetes、Kopsは主にAWSなどのクラウド環境で本番用クラスターを構築するツールとして使われる。Kubadmは、Kubernetesの公式なクラスター起動ツールで、ベアメタル環境などカスタム設定で利用されることが多い。RancherやOpenShiftは、複数のKubernetesクラスターを一元管理するためのGUIを備えたプラットフォームで、EKS(AWS)、GKE(Google Cloud)、AKS(Azure)といったマネージドサービスは、クラウドプロバイダーがKubernetesクラスターの運用を代行してくれるサービスである。これらのツールは目的によって使い分けられるが、今回はローカル開発に特化したMinikubeを利用する。
WindowsでMinikubeを始めるには、いくつかのステップが必要だ。最初のステップはMinikube自体のインストールである。公式ウェブサイトからインストーラーをダウンロードするか、「Minikube install」と検索して指示に従うことで簡単に導入できる。次に必要なのは「kubectl(キューブコントロール)」というツールだ。これは、Kubernetesクラスターと対話するためのコマンドラインツールで、このツールを使ってクラスターの状態を確認したり、アプリケーションをデプロイしたりする。これもMinikubeと同様に、公式ウェブサイトからWindows版をインストールするか、「kubectl install」で検索して導入する。
そして、Minikubeを動かす上で非常に重要なのが「Docker Desktop」のインストールだ。Minikubeは、KubernetesクラスターをDockerコンテナの中に構築して動作させるため、Docker環境が必要不可欠となる。Docker Desktopは、Windows上でDockerを簡単に利用するためのツールであり、公式サイトやMicrosoft Storeから無料でインストールできる。もしあなたのPCが仮想化技術であるHyper-Vをサポートしていない場合でも、WSL2(Windows Subsystem for Linux 2)をDockerのバックエンドとして利用できるため、事前にUbuntuなどのLinuxディストリビューションをMicrosoft Storeからインストールしておくとよいだろう。Docker Desktopの設定画面でWSL統合が正しく行われていることを確認することも大切だ。
これらの準備が整ったら、いよいよMinikubeクラスターを起動する。コマンドプロンプトやPowerShellで「minikube start」と入力するだけで、単一ノードのKubernetesクラスターが作成される。Windows環境では、このクラスターはVirtualBoxやHyper-Vの仮想マシンではなく、Dockerコンテナ内で実行される。ただし、時にはMinikubeがKubernetesのイメージをダウンロードする際に問題が発生することがある。そのような場合は、「minikube start --driver=docker --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers」というコマンドを使用することで、高速で信頼性の高い代替のイメージリポジトリ(Alibaba Cloudのミラー)を利用して問題を回避できる場合がある。
クラスターが起動したら、正しく動作しているかを確認する。まずは「kubectl get pods -A」コマンドを実行してみよう。これにより、クラスター内で動いているすべてのPod(システムが管理する小さな実行単位)が表示される。Minikubeがデフォルトで実行するシステムPodには、サービス間の通信を解決する「coredns」、クラスターのすべての状態を保存するデータベースである「etcd-minikube」、すべてのkubectlコマンドが通信する「kube-apiserver-minikube」、アプリケーションの目標状態を維持する「kube-controller-manager-minikube」、ネットワークルールを管理する「kube-proxy」、新しいPodを適切なノードに割り当てる「kube-scheduler」、そしてストレージを自動的に準備する「storage-provisioner」などがある。これらすべてのPodが「Running」状態であれば、Minikubeクラスターは正常に稼働している。さらに、「kubectl get nodes」コマンドでクラスター内のノード(サーバー)の状態を確認できる。「minikube」という名前のノードが「Ready」状態であり、「control-plane」という役割を持っていれば、クラスターの管理を行うノードが健康であることを示している。
次に、Kubernetesにおけるアプリケーションの最小単位である「Pod(ポッド)」について理解しよう。Podは、一つまたは複数のコンテナを実行するための定義であり、基本的にDockerのコンテナと似ているが、Kubernetesが管理する最小のデプロイ単位となる。ほとんどのPodは単一のコンテナを含むが、ログ収集や監視のための「サイドカーコンテナ」、メインのコンテナが起動する前に実行される「Initコンテナ」を持つこともある。Pod内のすべてのコンテナは同じIPアドレスとネットワーク空間を共有するため、お互いに簡単に通信できるのが特徴だ。
いよいよ、最初のアプリケーションとしてNginxをデプロイしてみよう。Nginxはウェブサーバーとして広く使われているソフトウェアだ。アプリケーションをデプロイするには、「pod.yml」のようなYAML形式の設定ファイルを作成する。Windowsでは「notepad pod.yml」と入力してファイルを作成し、以下の内容を貼り付ける。
1apiVersion: v1 2kind: Pod 3metadata: 4 name: nginx 5spec: 6 containers: 7 - name: nginx 8 image: nginx:1.14.2 9 ports: 10 - containerPort: 80
このYAMLファイルは、「nginx」という名前のPodを作成し、その中に「nginx:1.14.2」というイメージを使ったコンテナを一つ実行する、という指示をKubernetesに与えている。このコンテナは、ウェブサーバーの標準ポートである80番ポートを公開する。ファイルを作成したら、「kubectl create -f pod.yml」コマンドを実行して、このPodをKubernetesクラスターにデプロイする。デプロイ後、「kubectl get pods」でPodの状態を確認し、「kubectl get pods -o wide」と入力すれば、PodのIPアドレスを含めた詳細情報を確認できる。
最後に、デプロイしたアプリケーションが正しく動作しているかを確認し、Minikubeクラスターにアクセスする方法を学ぶ。Minikubeクラスターが動作している仮想環境(Dockerコンテナ)にログインするには、「minikube ssh」コマンドを使用する。これにより、Linux環境であるMinikubeノードに直接SSH接続できるため、通常のLinuxコマンドを実行したり、Dockerコンテナの状態を確認したり、トラブルシューティングを行ったりすることが可能だ。ログインしたら、先ほど確認したNginx Podの内部IPアドレスを使って、「curl <POD_IP>」コマンドを実行してみよう。Nginxのウェルカムページが表示されれば、アプリケーションが正常に動作していることの証拠である。
ここまでで、Minikubeのインストールからkubectlの設定、Docker Desktopの準備、Minikubeクラスターの起動、システムPodの確認、Podの概念理解、Nginxアプリケーションのデプロイ、そしてクラスターへのアクセスと動作確認までの一連の流れを経験したことになる。このMinikubeを使った環境は、Kubernetesの学習やローカルでの開発に非常に適しており、将来的にKops、EKS、GKE、AKSといった本番環境向けのツールへとステップアップするための貴重な第一歩となるだろう。さらにKubernetesを深く学ぶためには、公式のKubectlチートシートなどを参照し、様々なコマンドを試してみることをお勧めする。