キーワードで検索

今日を知り、明日を変えるシステム運用メディア

【kubenetis】Minikubeでローカル環境にPodをデプロイする方法を解説

【Kubenetes】Minikubeでローカル環境にPodをデプロイする方法を解説

Kubernetesを使ったアプリケーション運用の基本を学ぶなら、まずはMinikubeでローカル環境から始めてみましょう。本記事では、Minikubeを使ったKubernetesクラスターのセットアップから、Podをデプロイし、実際にアクセスするまでの手順を詳しく解説します。

初心者の方でも分かりやすいように、具体的なコマンドと設定ファイル例を交えながら説明します。

Minikube・kubectlのインストール方法

Minikubeをローカル環境にインストールする方法を解説します。Minikubeは、Kubernetesを手軽に試せるツールであり、以下の手順で簡単にセットアップできます。

Minikubeをインストールするには、macOSの場合はHomebrewを利用、WindowsはChocolateyまたはScoopを利用します。Minikubeインストールの詳しい手順や事前準備は、「Minikubeで始めるKubernetes入門:ローカル環境で実践するための事前準備を解説」をご覧ください。

また、「kubectl」はKubernetesクラスターを操作するためのCLI(コマンドラインインターフェース)ツールです。こちらはPodやService、DeploymentなどのKubernetesリソースを作成・管理する際に必須のツールです。こちらも、詳しいインストール手順は「Minikubeで始めるKubernetes入門:ローカル環境で実践するための事前準備を解説」をご覧ください。

Minikubeクラスターの起動

Minikubeを使って、ローカル環境でKubernetesクラスターを起動します。ここではクラスターを構築し、起動の状態を確認する手順を解説します。

Kubernetesクラスターが正常に起動すれば、いよいよリソースのデプロイや管理が可能になります。Minikubeクラスターの起動には以下の方法があります。

1.基本的な起動コマンド

Minikubeを使用してクラスターを起動するには、以下のコマンドを実行します。

minikube start

実行後、以下のようなメッセージが表示されれば、クラスターが正常に起動しています。

2.リソース指定で起動

クラスターに割り当てるリソース(メモリやCPU)をカスタマイズすることも可能です。以下のように指定して起動します。

minikube start –memory=4096 –cpus=2
  • –memory=4096: メモリを4GBに設定
  • –cpus=2: CPUコアを2つ使用

3.使用するドライバーの指定

Minikubeは、仮想化ドライバーを使用してクラスターを構築します。環境によっては、以下のようにドライバーを指定して起動する必要があります。

minikube start –driver=docker

使用可能なドライバーにはdocker、virtualbox、hypervなどがあります。

クラスターの状態を確認

クラスターが正常に動作しているか確認するには、以下のコマンドを使用します。

1.クラスターのステータス確認

minikube status

正常な場合は、このような出力が得られます。

2.Kubernetesノードの状態を確認

起動したKubernetesクラスターのノード情報を取得するには、以下を実行します。

kubectl get nodes

出力例

ノードのSTATUSがReadyであれば、クラスターが正常に起動しています。

Minikubeクラスターがうまく起動しない場合

クラスターの起動中にエラーが発生した場合、こちらの解決方法を試してみてください。

1.仮想化ドライバーの確認

仮想化ソフトウェアが正しくインストールされていない場合、エラーが発生することがあります。以下のコマンドで使用可能なドライバーを確認します。

minikube drivers

2.クラスターのリセット

問題が解決しない場合は、クラスターを削除して再作成します。

minikube delete
minikube start

3.ログの確認

詳細なエラー内容を確認するには以下を使用します。

minikube logs

Pod定義ファイルの作成

VScodeでyamlファイルを作成して、yamlファイルに Pod定義を書きます。

  • ファイル名:OpsToday-minikube-test.yaml

Kubernetesでは、アプリケーションやリソースをデプロイする際に、YAMLファイルでその定義を記述します。ここでは、Pod定義ファイルを作成し、Kubernetesクラスターにデプロイする準備を進めます。

Pod定義ファイルとは?

Pod定義ファイルは、Kubernetesでアプリケーションの動作を管理するための「設計図」です。このファイルに、以下のような情報を記載します。

  • Podの名前
  • コンテナのイメージ(例: nginxやMySQLなど)
  • コンテナが使用するポート

YAMLファイルの作成手順

任意のテキストエディタまたはコードエディタを使用して、新しいYAMLファイルを作成します。今回は、Visual Studio Code(VSCode)を用いて新規作成していきます。

1.新しいファイルを作成

任意のフォルダにYAMLファイルを新規作成します。(例:OpsToday-minikube-test.yaml)

~/OpsToday-minikube $ touch OpsToday-minikube-test.yaml

2.以下の内容をYAMLファイルに記述

apiVersion: v1
kind: Pod
metadata:
  name: opstoday-test-pod
  labels:
    app: opstoday-app
spec:
  containers:
  – name: opstoday-container
    image: nginx
    ports:
    – containerPort: 80

YAMLファイルの構造解説

先ほど新規作成したYAMLファイルには、以下の情報が含まれています。

  1. apiVersion
    使用するKubernetes APIのバージョン。ここではv1を指定しています。
  2. kind
    作成するリソースの種類を指定します。ここではPodを作成します。
  3. metadata
    Podの名前やラベルなど、リソースに関するメタ情報を指定します。
    name: Podの名前(例: opstoday-test-pod)
    labels: リソースに付与するラベル(例: app: opstoday-app)
  4. spec
    Podの詳細な仕様を記述するセクションです。
    containers:Pod内で動作するコンテナのリスト。ここでは1つのコンテナを指定しています。
    name: コンテナの名前(例: opstoday-container)
    image: 使用するDockerイメージ(例: nginx)
    ports: コンテナがリッスンするポート番号(例: 80)

YAMLはインデント(スペースの数)に非常に厳格なフォーマットを持っています。スペースの数が合わないとエラーになるため、慎重に記述してください。

Podをデプロイ

ここでは、新規作成したPod定義ファイル(OpsToday-minikube-test.yaml)をKubernetesクラスターにデプロイする手順を解説します。また、デプロイ後にPodが正しく動作しているかを確認する方法についても詳しく説明します。

KubernetesクラスターにPodをデプロイするには、kubectl applyコマンドを実行します。

kubectl apply -f OpsToday-minikube-test.yaml

実行後、以下のようなメッセージが表示されれば、Podの作成に成功しています。

デプロイ後の確認方法

デプロイされたPodが正常に動作しているかを確認するには、以下のコマンドを実行します。

kubectl get pods

実行例:

READYPod内のコンテナ数と起動中のコンテナ数を表示します(例: 1/1)
STATUSPodの状態を表示します。Runningとなっていれば正常に動作しています。
RESTARTSコンテナが再起動した回数を表示します。再起動が頻発している場合、設定やイメージに問題がある可能性があります。
AGEPodが作成されてからの経過時間を表示します。

Podの詳細情報を確認

Podの詳細な設定や状態を確認したい場合、以下のコマンドを実行します。

kubectl describe pod opstoday-test-pod

出力例の一部:

Podのログを確認

コンテナ内のアプリケーションログを確認する場合は、以下のコマンドを使用します。

kubectl logs opstoday-test-pod

これにより、Pod内のコンテナから出力されるログ情報をリアルタイムで確認できます。

Podにアクセスする

Kubernetesクラスター上にデプロイしたPodの内部で動作しているアプリケーションにアクセスする方法を解説します。ここでは、kubectl port-forwardコマンドを使用し、ローカルマシンのブラウザからアプリケーションにアクセスする具体的な手順を紹介します。

ポートフォワーディングによるPodアクセス

Kubernetesクラスター上のPodに直接アクセスする手段として、最も手軽で汎用的な方法が「ポートフォワーディング」です。Pod内のアプリケーションにアクセスするために、以下のコマンドを実行します。

kubectl port-forward pod/opstoday-test-pod 8080:80
pod/opstoday-test-podアクセスするPodの名前(kubectl get podsで確認可能)
8080:80ローカルマシンのポート8080を、Pod内のポート80に接続

実行後、以下のようなメッセージが表示されれば成功です。

ブラウザでアクセス

ローカルマシンのブラウザを開き、以下のURLにアクセスします。

http://localhost:8080

nginxのデフォルトページ(「Welcome to nginx!」と書かれたページ)が表示されます。

ポートフォワーディングの終了

ポートフォワーディングを終了するには、コマンドを実行しているターミナルでCtrl + Cを押します。

  • ローカルマシンのポート8080からPod内のポート80にアクセスできるようになる。
  • ブラウザでhttp://localhost:8080にアクセスすると、Nginxのデフォルトページが表示されるか確認する

ここまでで検証は終了です。

作成したPodを削除

検証やデプロイが終わったら、不要になったPodを削除してクラスター内のリソースを解放します。Kubernetesでは簡単なコマンドでPodを削除することができます。ここでは、Podの削除方法と、削除後に状態を確認する手順を解説します。

削除コマンドは、実行で実行してください。

kubectl delete pod OpsToday-test-pod

実行後、以下のようなメッセージが表示されれば削除成功です。

pod “opstoday-test-pod” deleted

削除後の確認は、以下のコマンドを利用します。

kubectl get pods

Pod一覧にopstoday-test-podが表示されていなければ、削除が完了しています。

もし削除されていない場合は、deleteコマンドの実行ミスや、Podの名前のタイプミスを確認してください。

Minikubeクラスターを停止

Kubernetesクラスターを使い終わったら、不要なリソースを解放するためにMinikubeクラスターを停止します。クラスターを停止することで、CPUやメモリなどのローカルリソースを節約できるほか、後でクラスターを再起動して再利用することも可能です。

停止コマンドを実行

Minikubeクラスターを停止するには、以下のコマンドを実行します。

minikube stop

実行後、以下のようなメッセージが表示されれば、クラスターが正常に停止されたことを確認できます。

クラスター停止後の確認

クラスターが停止したか確認するには、以下のコマンドを使用します。

minikube status

停止している場合、以下のような出力が表示されます。

minikube
  host: Stopped
  kubelet: Stopped
  apiserver: Stopped
  kubeconfig: Stale

まとめ

Minikubeを使えば、ローカル環境で手軽にKubernetesクラスターを構築し、Podをデプロイする方法を学ぶことができます。本記事では、Minikubeとkubectlのインストールからクラスターの起動、YAMLファイルを使ったPodのデプロイ、さらにPodへのアクセス方法や削除、クラスターの停止手順までを解説しました。

Minikubeは初心者から中級者まで活用できるツールです。本記事の手順を実践しながら、自分の開発環境に合わせたKubernetesの運用を試してみてください。

現在クラウドエンジニアとして勤務。AWS(SAP、DOP)とAzure(AZ-305)の資格を保有しており、ネットワークやセキュリティに関する業務を主に行っています。

最新情報をお届けします!

最新のITトレンドやセキュリティ対策の情報を、メルマガでいち早く受け取りませんか?ぜひご登録ください

メルマガ登録

最新情報をお届けします!

最新のITトレンドやセキュリティ対策の情報を、メルマガでいち早く受け取りませんか?ぜひご登録ください

メルマガ登録