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 コンテナとは何ですか?

推薦する

外部リンクが存在する理由についての簡単な説明

SEO 最適化は、一般的にオンサイト最適化とオフサイト最適化の 2 つの部分に分けられます。オンサイ...

新しいウェブサイトを最適化する方法についての簡単な説明

現在、インターネット上には何億ものウェブサイトがあり、毎日何千ものあらゆる種類の新しいウェブサイトが...

misterhost 無制限トラフィック VPS/1.99 ユーロ/月/無料 .de ドメイン名

同社の VPS は XEN と Openvz をベースにしています。すべての VPS のトラフィック...

Dogyun:「Japan-DC2」データセンター「大阪BGP」回線VPSを簡単レビュー

GouCloud は日本に 2 つのデータセンターを持ち、どちらも大阪にあります。DC1 はソフトバ...

Yu'ebao 1周年レビュー: Yu'ebao は今年何を革新したのか?

原題: 今年、Yu’ebao は何を覆したのか?今は誰もが財務管理を行える時代であり、初のインターネ...

売り手のためのクイックルック: ポッドキャストのための 5 つの SEO ヒント

パンデミック中にポッドキャストを聴く人の数が劇的に増加し、ポッドキャストは2019年に主流のマーケテ...

クラウドネイティブのヒント: ローカル K8s に自己署名 TLS 証明書を簡単にデプロイする

インターネットの急速な発展に伴い、セキュリティはますます私たちの注目の的となっています。 HTTPS...

大連のウェブサイト最適化は、ウェブサイトの最適化にかかる時間と労力を節約する良い方法を共有しています

1. 大連のウェブサイトを最適化するには、外部リンクを公開し、外部リンクを見つける必要があります。で...

novos: ベルギー VPS、月額 8 ユーロ、2G メモリ/1 コア (Ryzen 3900XT)、40g NVMe+1T HDD/25T トラフィック

2016年に設立されたベルギーのVPS業者「novos」は、「ハイエンドVPS」を売りにしている。ハ...

UC声明:百度が独占を利用して神馬検索を攻撃した疑い

新浪科技は4月30日夜、UC優士が今晩、百度によるUCブラウザと神馬検索の「誤操作」の可能性について...

最適化プロセスにおけるA5ソフト記事の役割の実践的な共有

ご存知のように、ウェブサイトの重みはウェブサイトの最適化プロセスで非常に重要な役割を果たしています。...

レンタカー業界のソフト記事マーケティングで注意すべき点

レンタカー業界は昔から伝統的な業界です。伝統的な業界の伝統的なマーケティング手法を放棄してはなりませ...

Longhorn、エンタープライズレベルのクラウドネイティブコンテナ分散ストレージ - 高可用性

[[419475]]目次データの局所性デフォルトのグローバル設定の変更Longhorn UI を使用...

tudcloud: 香港の VPS、100Mbps の帯域幅、月額支払いで 20% オフ、年間支払いで 50% オフ、最低 $54/年

Tudcloud は現在、香港 VPS の特別プロモーションを実施しており、月額支払いの場合は 20...