MinikubeでローカルKubernetesクラスターを実行するにはどうすればよいですか?
Minikubeは、ローカル開発で使用するために設計された最小限のKubernetesディストリビューションです。これはKubernetesプロジェクトの一部として開発され、すべての主要なクラスター機能の実装が含まれています。
Minikubeは、Linux、Mac、およびWindowsホストで実行されます。コンテナーまたは仮想マシン環境を使用して、クラスターとそのワークロードを実行できます。サポートされているすべてのランタイムは次のとおりです。
- Docker
- ポッドマン
- KVM
- Hyper-V
- ハイパーキット
- パラレル
- 仮想ボックス
- VMware
このガイドを続行する前に、これらのテクノロジーのいずれかがインストールされていることを確認してください。Minikubeのインストールプロセスでは、使用可能なランタイムが自動的に検出され、適切な構成が適用されます。展開を完了してMinikubeの使用を開始する方法を説明します。
ミニキューブのインストール
このガイドでは、x86Linuxシステムに焦点を当てます。Windows、Mac、またはその他のCPUプラットフォームを使用している場合、最も詳細なセットアップ情報については、Minikubeのドキュメントを参照してください。初期インストール手順の後、Minikubeの基本的な使用法はサポートされているすべてのシステムで同じです。
Linuxユーザーは、バイナリの直接ダウンロードまたはDebian/RPMパッケージのどちらかを選択できます。この例では、バイナリダウンロードを使用します。
$ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
$ sudo install minikube-linux-amd64 / usr / local / bin / minikube
これでMinikubeがインストールされ、使用できるようになります。
Kubernetesクラスターの開始
minikube start
次のコマンドでMinikubeクラスターを起動します。
$ minikube start
Ubuntu20.04のminikubev1.25.2
Dockerドライバーを自動的に選択しました。その他の選択肢:kvm2、ssh
クラスタminikubeでコントロールプレーンノードminikubeを開始しています
ベースイメージを引っ張る。..
Downloading Kubernetes v1.23.3 preload. ..
Minikubeは、最新バージョンのKubernetesを自動的にダウンロードして実行します。このプロセスには数分かかる場合があります。コマンド出力は進行状況を示し、Minikubeが実行しているアクションを表示します。上記の例では、クラスターをホストするためにDockerドライバーが選択されていることがわかります。コンテナプラットフォームまたは仮想化スタックが自動的に検出されない場合は、Minikubeドライバのドキュメントを参照してください。
Kubectlでクラスターを使用する
Minikubeは環境を変更して、既存のKubectlインストールを使用してクラスターに接続できるようにします。Minikubeクラスターを対象とminikube
するコンテキストをファイルに追加します。KUBECONFIG
Minikubeには、コマンドでアクセスできるKubectlのバンドルバージョンも含まれていますminikube kubectl
。これは、Kubectlをまだインストールしていない場合、または既存のバイナリがMinikubeクラスターのバージョンと異なる場合に役立ちます。
# Uses the Kubectl version that's bundled with Minikube
$ minikube kubectl get pods
このチュートリアルの残りの部分では、簡単なkubectl
コマンドを示し、それがMinikubeクラスターを対象としていると想定します。minikube
毎回プレフィックスなしでMinikube関連のKubectlを使用するようにシェルエイリアスを設定できます。
$ alias kubectl="minikube kubectl"
Minikube liveとKubectlが利用可能になったので、Kubernetesクラスターにアプリケーションを追加できます。
$ kubectl create deployment nginx --image=nginx:latest
作成されたdeployment.apps/nginx
$ kubectl expose deployment nginx --type=LoadBalancer --port=80
service/nginx exposed
このコマンドminikube service
は、サービスのパブリックURLを提供します。
$ minikube service nginx --url
http://192.168.49.2:31599
URLをWebブラウザーに貼り付けて(または--url
フラグなしでコマンドを実行して)、サービスを表示します。
Kubernetesコントロールパネルへのアクセス
Minikubeは、オプションの組み込み機能としてKubernetesダッシュボードを提供します。コマンドを実行minikube dashboard
してダッシュボードコンポーネントをロードし、新しいブラウザタブでインターフェイスを起動します。
ダッシュボードを使用して、リソースを管理し、そのアクティビティを視覚化できます。minikube dashboard
コントロールパネルを操作している間、ターミナルにコマンドを保持します。完了したら、Ctrl+Cでコマンドを終了します。
イメージレジストリの有効化
Minikubeには、オプションのエクストラとしてイメージレジストリが含まれています。これにより、コンテナイメージをMinikube内に保存して、クラスター内でデプロイできるようになります。
まず、レジストリアドオンを有効にします。
$ minikube addons enable registry
次に、画像にタグを付けて、Minikubeレジストリをポイントします。レジストリは、コマンドで指定されたIPアドレスのポート5000でリッスンしていますminikube ip
。
$ docker tag my-image:latest $(minikube ip):5000/my-image:latest
送信する前に、URLを安全でないレジストリとして受け入れるようにDockerを構成する必要があります。insecure-registries
これをファイル内のボックスに追加して、/etc/docker/daemon.json
DockerにHTTPアクセスを許可させます。
IPアドレスをコマンドで指定されたものに置き換えますminikube ip
。コマンドを使用してDockerを再起動しsystemctl restart docker
ます。
これで、画像をMinikubeレジストリに送信できます。
$ docker push $(minikube ip):5000/my-image:latest
クラスタ内のモジュールがこのイメージを使用する前に、最後のステップを完了する必要があります。Minikubeコンテナランタイムも、安全でないレジストリアクセスを許可するように構成する必要があります。これを有効にするに--insecure-registry
は、起動フラグを有効にしminikube start
ます。IPアドレスは、MinikubeインストールのデフォルトのクラスターIPアドレスを基準にする必要があります。kubectl get services
これは、CLUSTER-IP
サービスを実行して確認することで取得できますkubernetes
。次に、Minikubeを停止し、追加のフラグを使用して再起動します。
$ kubectl get service
名前タイプクラスター-IP外部-IPポート年齢
kubernetes ClusterIP10.96.0.1<なし>443/ TCP 63m
$ minikube stop
$ minikube start --insecure-registry 10.96.0.1/24
Kubernetesバージョンの変更
Minikubeは、デフォルトで利用可能な最新バージョンのKubernetesを使用します。特定のバージョンに切り替えるには--kubernetes-version
、クラスターの開始時にフラグを有効にします。
$ minikube start --kubernetes-version=v1.23.0
複数の個別のプロファイルを作成することで、それぞれが異なるバージョンのKubernetesで複数のクラスターを同時に実行できます。フラグ--profile
は、特定のコマンドのターゲットプロファイルを選択します。
$ minikube start --profile v1.22 --kubernetes-version=v1.22.0
$ minikube start --profile v1.23 --kubernetes-version=v1.23.0
$ minikube --profile v1.22 kubectl get pods
複数のノードを使用する
Minikubeは複数の仮想ノードをサポートしています。これにより、新しい物理ハードウェアを展開することなく、使用可能なノード間でアプリケーションがどのように拡張されるかをテストできます。
この例では、次の3つのノードを持つクラスターを作成します。
$ minikube start --nodes 3
Kubectlを使用してノードを一覧表示することにより、複数のノードが使用可能であることを確認できます。
$ kubectl get nodes
名前ステータスロール年齢バージョン
minikube Ready control-plane,master 71m v1.23.3
minikube-m02 Ready <none> 71m v1.23.3
minikube-m03 Ready <none> 71m v1.23.3
リモートアクセスを有効にする
Minikubeはデフォルトで着信トラフィックを受け入れません。これはローカルでの使用を目的としており、外部の要求に対応するようには設計されていません。コントロールプレーンのリスニングアドレスを変更することで、クラスター上のワークロードへのリモートアクセスを有効にすることができます。これは、完全なリスク評価の後でのみ実行してください。ネットワークは外部に公開されます。
$ minikube start --listen-address=0.0.0.0
特定のサービスへのアクセスを開く必要がある場合、ポート転送はより安全なソリューションです。Kubectlコマンドport-forward
を使用して、ホストポートからサービスの1つへのルートを作成します。
$ kubectl port-forward service/nginx 8080:80
localhost:8080
これで、このチュートリアルの前半で作成したNGINXサービスにアクセスしてアクセスできます。ホストのポート8080は、サービスのポート80にマップされます。
ミニキューブを削除する
Minikubeの利点の1つは、アンインストールが簡単なことです。Minikubeが適切でないと判断した場合はdelete
、コマンドを実行して、システムに追加されたすべてのものを削除します。
$ minikube delete
より破壊的でないオプションはminikube stop
、クラスターを停止することですが、すべてのリソースはそのままにしておきます。コマンドを使用してクラスターを再起動できますminikube start
。
結論
Minikubeは、コンテナまたは仮想化を使用してローカルマシンでクラスタを実行するスタンドアロンのKubernetesディストリビューションです。これは、上流のKubernetesプロジェクトによって維持されています。Minikubeは、Kubernetesダッシュボード、ネットワークサポート、永続ストレージ、交換可能なコンテナランタイムを含む、Kubernetesのフル機能の実装です。
Minikubeの詳細については、公式ドキュメントをご覧ください。または、使い慣れたKubectlコマンドを使用してクラスターを管理し、新しいワークロードをデプロイします。これで、アプリケーションを構築およびテストするための完全に機能するローカルKubernetes環境ができました。
コメントを残す