Kubernetes オーケストレーション ツール Minikube を 1 つの記事で理解する

Kubernetes オーケストレーション ツール Minikube を 1 つの記事で理解する

1. Minikube が必要な理由

コンテナ技術の急速な発展と広範な応用により、Kubernetes は企業で重要な役割を果たしています。通常、Kubernetes は「開発を高速化し、メンテナンスを簡素化するために単一のシステムとして管理される Linux コンテナのクラスター」と説明されます。エンタープライズ アプリケーション サービスのコンテナ化変革には、Kubernetes の学習と使用が不可欠な要素となっています。

しかし、このシステムに不慣れな DevOps 担当者にとって、環境にマルチノード Kubernetes クラスターを完全に展開するのは確かに困難です。このタイプの展開には、複雑な構成、ネットワーク設定、およびリソース管理が含まれ、深い理解と関連する経験が必要です。

DevOps 担当者がこの困難を克服できるようにするために、Minikube、K3s、Kind などのツールやプラットフォームが登場しました。これらのツールは、簡素化された軽量の Kubernetes デプロイメント オプションを提供し、ローカルまたは開発環境で完全に機能する Kubernetes クラスターを簡単に立ち上げることができます。

さらに、クラウド サービス プロバイダーは、Amazon EKS、Google Kubernetes Engine (GKE)、Microsoft Azure Kubernetes Service (AKS) などのマネージド Kubernetes サービスも提供しています。これらのマネージド サービスは、基盤となるインフラストラクチャの複雑さに対処し、DevOps スタッフが基盤となる Kubernetes クラスターの詳細を気にすることなく、アプリケーションの展開と管理に集中できるようにします。

したがって、Kubernetes を初めて使用する DevOps 担当者は、これらのツールとマネージド サービスを使用することで、Kubernetes の導入と管理の難しさを軽減できます。経験と深い学習を積み重ねることで、Kubernetes のあらゆる側面を徐々に習得して理解できるようになり、実際の運用環境で複雑なマルチノード Kubernetes クラスターをデプロイおよび管理できるようになります。

つまり、このシステムに慣れていない DevOps 担当者が環境に完全なマルチノード Kubernetes クラスターを完全に展開することは困難ですが、簡素化された展開ツールとマネージド サービスを使用することで、これらの課題を徐々に克服し、エンタープライズ アプリケーション サービスのコンテナー化変換に対する信頼性の高いサポートを提供できます。

2. Minikube Tool とは何ですか?

Kubernetes は、Go 言語に基づいて開発された Docker コンテナ用のオープンソース オーケストレーション システムです。コンピューティング クラスター内のノードのスケジュールを処理し、ワークロードをアクティブに管理して、その状態がユーザーの明示された意図と一致するようにします。しかし同時に、Minikube は、macOS、Linux、Windows プラットフォーム上でローカライズされた Kubernetes クラスターを実装できるオープンソースの「ネイティブ Kubernetes エンジン」として詳細に説明されています。 Minikube は、Kubernetes によって公式に推奨されている最高のコラボレーション ツールの 1 つであり、ローカル Kubernetes アプリケーション開発用のツールを目指しており、適用可能なすべての Kubernetes 機能をサポートしています。

Minikube の主な機能は、ローカル マシン上で開発用に単一ノードの Kubernetes クラスターを実行することです。 VirtualBox、HyperV、KVM2 などの複数の仮想マシン ドライバーをサポートします。 Minikube は Kubernetes の世界では比較的成熟したソリューションであるため、ロードバランサー、マルチクラスター、ノードポート、永続ボリューム、イングレス、ダッシュボード、コンテナランタイムなど、サポートされる機能のリストは印象的です。

オープンソース ツール Minikube をベースに、開発者、運用担当者、DevOps エンジニアはローカルの Kubernetes シングルノード クラスター環境を迅速に構築できます。 Minikube は高度なソフトウェアおよびハードウェア リソースを必要としないため、技術者が学習、実践し、日常のプロジェクト開発を実行するのに便利です。

一般的に、Kubernetes と Minikube は、コンテナ化されたアプリケーションの開発とデプロイメントに強力なサポートを提供します。分散システム オーケストレーション ツールとして、Kubernetes はコンテナ化されたアプリケーションを管理およびスケジュールすることができ、Minikube はローカル マシン上で Kubernetes クラスターを構築および管理するためのシンプルで実用的な方法を提供します。これらのツールを使用することで、開発者はアプリケーションをより効率的に開発、テスト、展開できるようになり、アプリケーション配信の速度と品質が向上します。

3. さまざまなMinikubeテクノロジースタックを理解する

Minikube の関連機能に基づいて、次の図に示すように、オペレーティング システム (OS)、CPU アーキテクチャ、プログラム管理テクノロジ (ハイパーバイザ テクノロジ)、コンテナー ランタイム (CRI)、コンテナー ネットワーク インターフェイス プラグイン (CNI) など、複数の観点から Minikube がサポートする技術運用スタックについて簡単に説明します。

1. オペレーティングシステム (OS):

Minikube は、以下を含むさまざまなオペレーティング システムでの実行をサポートしています。

  • macOS: Minikube は macOS 上で実行でき、便利なローカル開発およびテスト環境を提供します。
  • Linux: Minikube はさまざまな Linux ディストリビューションでの実行をサポートしているため、開発者はローカル マシン上に Kubernetes クラスターを構築できます。
  • Windows: Minikube は Windows プラットフォーム上で実行でき、Windows ユーザー向けにローカライズされた Kubernetes 開発環境を提供します。

2. CPUアーキテクチャ:

Minikube は、次のようなさまざまな CPU アーキテクチャに適応できます (ただし、これらに限定されません)。

  • x86 アーキテクチャ: Minikube は、現在最も一般的なデスクトップおよびサーバー プロセッサ アーキテクチャである x86 アーキテクチャ プロセッサをサポートしています。
  • ARM アーキテクチャ: Minikube は、組み込みデバイスやモバイル デバイスでよく使用されるプロセッサ アーキテクチャである ARM アーキテクチャもサポートしています。

3. ハイパーバイザー技術:

Minikube は仮想化マネージャーを使用して仮想マシンを作成および管理し、マルチノード Kubernetes クラスターをシミュレートします。次のようなさまざまな仮想化マネージャー テクノロジをサポートします (ただし、これらに限定されません)。

  • VirtualBox: Minikube は、VirtualBox を仮想化マネージャーとして使用して、ローカル マシン上で仮想マシンを作成および管理できます。
  • HyperV: Windows プラットフォームの場合、Minikube は HyperV を仮想化マネージャーとして使用することをサポートし、ローカライズされた Kubernetes 環境を提供します。
  • KVM2: Linux プラットフォームでは、Minikube は KVM2 を仮想化マネージャーとして使用して、ローカル Kubernetes クラスターを構築および管理できます。

4. コンテナランタイム(CRI):

Minikube は、ローカル マシン上でコンテナー化されたアプリケーションを実行および管理するための複数のコンテナー ランタイムをサポートします。 Minikube でサポートされている一般的なコンテナ ランタイムは次のとおりです。

  • Docker: 最も人気のあるコンテナ ランタイムの 1 つである Minikube は、Docker を使用してコンテナを作成および管理することをサポートしており、アプリケーションをローカル Kubernetes クラスター内のコンテナとして実行できます。
  • containerd: Minikube は、コンテナ ランタイムとして containerd の使用もサポートしています。 Containerd は、Kubernetes にコンテナ管理機能を提供する軽量のコンテナ ランタイムです。

5. コンテナ ネットワーク インターフェイス プラグイン (CNI):

Minikube は、コンテナ間のネットワーク通信と接続を可能にするさまざまなコンテナ ネットワーク インターフェイス プラグインをサポートしています。以下は、Minikube でサポートされている一般的なコンテナ ネットワーク インターフェイス プラグインです。

  • Calico: Minikube は、Calico をコンテナ ネットワーク インターフェイス プラグインとして統合し、ネットワーク ポリシーとセキュリティ機能を提供できます。
  • flannel: Minikube は、コンテナ ネットワーク インターフェイス プラグインとして flannel の使用もサポートしています。 Flannel は、コンテナが相互に通信できるようにするシンプルで効率的なネットワーク オーバーレイを提供します。

4. Minikubeツールの基本的な展開とインストール

Minikube はインストールとデプロイが簡単です。ここでは、macOS プラットフォームを例に簡単に説明します。詳細は以下の通りです。

 [administrator@JavaLangOutOfMemory ~ ]% brew install minikube [administrator@JavaLangOutOfMemory ~ ]% minikube start

もちろん、以下のように起動時のパラメータをカスタマイズすることもできます。

 [administrator@JavaLangOutOfMemory ~ ]% kubectl version Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.2", GitCommit:"092fbfbf53427de67cac1e9fa54aaa09a28371d7", GitTreeState:"clean", BuildDate:"2021-06-16T12:52:14Z", GoVersion:"go1.16.5", Compiler:"gc", Platform:"darwin/amd64"} Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.7", GitCommit:"132a687512d7fb058d0f5890f07d4121b3f0a2e2", GitTreeState:"clean", BuildDate:"2021-05-12T12:32:49Z", GoVersion:"go1.15.12", Compiler:"gc", Platform:"linux/amd64"}

デプロイが完了したら、関連する構成パラメータを確認します。

 [administrator@JavaLangOutOfMemory ~ ]% kubectl versionClient Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.2", GitCommit:"092fbfbf53427de67cac1e9fa54aaa09a28371d7", GitTreeState:"clean", BuildDate:"2021-06-16T12:52:14Z", GoVersion:"go1.16.5", Compiler:"gc", Platform:"darwin/amd64"}Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.7", GitCommit:"132a687512d7fb058d0f5890f07d4121b3f0a2e2", GitTreeState:"clean", BuildDate:"2021-05-12T12:32:49Z", GoVersion:"go1.15.12", Compiler:"gc", Platform:"linux/amd64"}
 [administrator@JavaLangOutOfMemory ~ ]% kubectl get node -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME minikube Ready control-plane,master 15h v1.20.7 192.168.49.2 <none> Ubuntu 20.04.2 LTS 5.10.25-linuxkit docker://20.10.7 [administrator@JavaLangOutOfMemory ~ ]% kubectl get pod -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-74ff55c5b-p6dlz 1/1 Running 0 15h kube-system etcd-minikube 1/1 Running 0 15h kube-system kube-apiserver-minikube 1/1 Running 0 15h kube-system kube-controller-manager-minikube 1/1 Running 0 15h kube-system kube-proxy-dcr72 1/1 Running 0 15h kube-system kube-scheduler-minikube 1/1 Running 0 15h kube-system storage-provisioner 1/1 Running 3 15h

一般的なコマンドラインは次のとおりです。

 [administrator@JavaLangOutOfMemory ~ ] % minikube --help minikube provisions and manages local Kubernetes clusters optimized for development workflows. Basic Commands: start Starts a local Kubernetes cluster status Gets the status of a local Kubernetes cluster stop Stops a running local Kubernetes cluster delete Deletes a local Kubernetes cluster dashboard Access the Kubernetes dashboard running within the minikube cluster pause pause Kubernetes unpause unpause Kubernetes Images Commands: docker-env Configure environment to use minikube's Docker daemon podman-env Configure environment to use minikube's Podman service cache Add, delete, or push a local image into minikube image Manage images Configuration and Management Commands: addons Enable or disable a minikube addon config Modify persistent configuration values profile Get or list the current profiles (clusters) update-context Update kubeconfig in case of an IP or port change Networking and Connectivity Commands: service Returns a URL to connect to a service tunnel Connect to LoadBalancer services Advanced Commands: mount Mounts the specified directory into minikube ssh Log into the minikube environment (for debugging) kubectl Run a kubectl binary matching the cluster version node Add, remove, or list additional nodes cp Copy the specified file into minikube Troubleshooting Commands: ssh-key Retrieve the ssh identity key path of the specified node ssh-host Retrieve the ssh host key of the specified node ip Retrieves the IP address of the specified node logs Returns logs to debug a local Kubernetes cluster update-check Print current and latest version number version Print the version of minikube options Show a list of global command-line options (applies to all commands). Other Commands: completion Generate command completion for a shell Use "minikube <command> --help" for more information about a given command.

5. Minikubeツールアーキテクチャの原則の分析

Minikube は、ローカル仮想マシン環境に基づいて Kubernetes クラスターをデプロイします。基本的なアーキテクチャの参照図を次の図に示します。

具体的な実施原則は次のとおりです。

1. .isoファイルをダウンロードしてローカル環境を利用できるようにします

Minikube の起動プロセス中に、まず .iso ファイルをダウンロードして、ローカル環境が使用可能な状態であることを確認する必要があります。この .iso ファイルには、通常、Linux ディストリビューション (通常は boot2docker) と必要なツールおよび依存関係が含まれています。

2. ダウンロードした.isoファイルからboot2docker.isoイメージファイルを抽出します。

ダウンロードした .iso ファイルから boot2docker.iso イメージ ファイルを抽出します。このイメージは、Minikube で実行するために特別に設計された軽量の Linux オペレーティング システムです。

3. SSH用の動的証明書を作成する

Minikube では、SSH 経由で仮想マシンと通信できるようにするには、動的証明書のペアを作成する必要があります。これらの証明書は、仮想マシンを管理および操作するための SSH 接続を安全に確立するために使用されます。

4. 指定された構成を使用してVirtualBox VMファイルを作成する

指定された構成情報に基づいて、VirtualBox 仮想化ソフトウェアを使用して仮想マシン (VM) ファイルを作成します。この仮想マシンは、Minikube クラスターのノードとして使用されます。

5. boot2docker.isoファイルをマウントするためのストレージを設定する

boot2docker.iso ファイルが仮想マシンのファイル システムにマウントされるように、仮想マシンのストレージ構成を設定します。これにより、仮想マシンはファイルにアクセスして起動できるようになります。

6. VMでネットワーク関連の設定(IP、DHCPなど)とSSHを設定する

仮想マシンへの IP アドレスの割り当てや DHCP の構成など、仮想マシンのネットワーク関連の設定を構成します。さらに、仮想マシン内に SSH が設定されているため、SSH 経由で仮想マシンにリモート接続して管理することができます。

7. 仮想マシンを起動する

次に、仮想マシンを起動し、起動プロセスが完了するまで待ちます。 VM が正常に起動すると、Minikube クラスターのノードになります。

8. Dockerコンテナエンジンが正常に起動できるように、/etc/hostname、/etc/hosts、systemd関連ファイルを設定します。

ホスト名 (/etc/hostname) の設定、ホスト解決 (/etc/hosts) の設定、systemd 関連ファイルの構成など、仮想マシンでいくつかの構成操作を実行します。これらの操作は、Docker コンテナ エンジンが仮想マシンで正常に起動して動作することを保証するのに役立ちます。

9. Kubernetes、Docker、その他の関連する基本環境設定を準備する

仮想マシンで Kubernetes、Docker、およびその他の関連する基本環境構成を準備します。これには、必要なパッケージのインストールと構成、環境変数の設定、関連するディレクトリの作成などが含まれる場合があります。

10. 関連するすべての Kubernetes ファイル (kubelet、kubeadm など) をダウンロードします。

kubelet や kubeadm などのツールを含む、関連するすべての Kubernetes ファイルを仮想マシンにダウンロードします。これらのツールは、Kubernetes クラスターの管理と操作に使用されます。

11. Kubernetesに必要なさまざまなパッケージのDockerイメージをプルし、分散ストレージシステムEtcd、スケジューラScheduler、コントローラController Manager、API Serverなどのさまざまなサービスを起動します。

仮想マシンで Kubernetes に必要なさまざまなコンポーネントとサービスの Docker イメージをプルし、これらのサービスを開始します。これには、Etcd イメージ (分散ストレージ システム用) のプル、スケジューラ、コントローラ マネージャ、API サーバーなどの主要コンポーネントの起動が含まれる場合があります。

上記の手順により、Minikube はコンポーネントの起動プロセスを正常に完了し、開発とテストに使用できるローカル Kubernetes クラスター環境をユーザーに提供しました。

<<:  短い講演: クラウドネイティブの可観測性の未来

>>:  Kubernetes の Pause コンテナとは何ですか?

推薦する

新しい環境におけるブログ運営の価値については4つの結論がある

ウェブマスター業界に入ったばかりの友人は、ブログの重要性と目的についてあまり知らないかもしれません。...

中国でブロックチェーン分野で承認された最初の国家標準「情報技術ブロックチェーンと分散型台帳技術リファレンスアーキテクチャ」

小湘晨報によると、9月11日、成都でブロックチェーン分野での国内初承認国家標準「情報技術ブロックチェ...

Weiboマーケティングを行う際に注意すべきことは何ですか?

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスWeiboマーケティング...

クラウドホスティング市場は混乱しており、中国市場のヒーローは誰かを問う

クラウド コンピューティング テクノロジーとアプリケーションの急速な発展に伴い、高性能、低コスト、柔...

Pacificrack: 388 台の限定プロモーション、年間 10.88 ドル、888M メモリ/1 コア/18g SSD/2T データ転送

Hostcat は、QN データセンターが所有するブランドである Pacificrack から最新の...

ハッカーがCBSのウェブサイトをダウンさせ、20分間オフラインに

ハッカーがCBSのウェブサイトをダウンさせ、20分間オフラインにPCMag によると、ハッカー集団 ...

中国語ウェブサイト向けSEOの選び方

GoogleとBaiduは説明文に対して異なる姿勢を示しています。Google Blackboard...

ユーザーの目新しさを求める心理を踏まえてウェブサイトのコンテンツを更新する方法

良い小説はいつかは読み終えます。読み終えた後、短期間で読者にもう一度読んでもらうのは非常に困難です。...

Baidu Green Radish Algorithm 2.0 アップデート後の外部リンク数の減少の分析

Baidu Green Radish Algorithm 2.0 のアップデート以来、多くのウェブマ...

#苦情防止ホスト# ウェアーズホスト: オランダ、スウェーデン、ブルガリア、ロシアのサーバー/VPS

warez-host.com は 2007 年に設立されました。通常は hostplay というブラ...

SEOは依然としてトラフィックを獲得する主な手段である

Taobao アフィリエイトと SEO は、1 つはウェブサイト所有者がトラフィックを収益化する方法...

ゲーム株は全面的に急落し、1日で1457億ドル以上が消失した。

ここ 2 日間、屋上は非常に混雑しています。** が上がるとすぐに、株式投機家がそれに続きます。米中...

Bステーションブランドのマーケティング戦略!

Bilibiliは今でもZ世代と伝統的な言語でコミュニケーションを取っているのでしょうか? Z世代が...