MinikubeでローカルKubernetesクラスターを実行するにはどうすればよいですか?

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.jsonDockerに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環境ができました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です