序文
この記事はK8sシリーズの2番目です。これまでにクラウドネイティブに関する多くのコラム記事を書いてきました。興味のある学生は、クラウドネイティブコラムのどのドアからでもアクセスできます。
この記事の目的:
- Kubernetesクラスターについて学びます。
- MiniKubeについて学びます。
- MiniKubeで最初のKubernetesクラスターを作成します〜
記事ディレクトリ
1.K8sクラスターの概要
Kubernetesは、高可用性コンピューターのクラスターを調整します。各コンピューターは、相互に接続された独立したユニットとして機能します。Kubernetesの抽象化により、コンテナ化されたアプリケーションを特定のスタンドアロンコンピューターに結び付けることなくクラスターにデプロイできます。この新しいデプロイメントモデルを使用するには、アプリケーションを単一のホストから分離する方法でパッケージ化する必要があります。つまり、アプリケーションをコンテナー化する必要があります。コンテナ化されたアプリケーションは、アプリケーションがパッケージ内で直接ホストと緊密に統合されている過去のデプロイメントモデルよりも柔軟で使いやすくなっています。Kubernetesは、アプリケーションコンテナをより効率的な方法でクラスタ間で自動的に分散し、スケジュールします。Kubernetesはオープンソースプラットフォームであり、本番環境で使用できます。
Kubernetesクラスタには、次の2種類のリソースが含まれています。
- マスターはクラスター全体をスケジュールします
- ノードはアプリケーションの実行を担当します
マスターは、クラスター全体を管理する責任があります。マスターは、アプリケーションのスケジューリング、アプリケーションの望ましい状態の維持、アプリケーションのスケーリング、新しい更新のロールアウトなど、クラスター内のすべてのアクティビティを調整します。
ノードは仮想マシンまたは物理マシンであり、Kubernetesクラスターでワーカーマシンとして機能します。各ノードには、ノードを管理し、ノードがマスターと通信するためのエージェントとして機能するKubeletがあります。ノードには、Dockerなどのコンテナ操作を処理するためのツールも必要です。実稼働グレードのトラフィックを処理するKubernetesクラスタには、少なくとも3つのノードが必要です。ノードに障害が発生すると、対応するetcdメンバーとコントロールプレーンインスタンスが失われ、冗長性が損なわれるためです。
Kubernetesにアプリケーションをデプロイするときは、マスターにアプリケーションコンテナを起動するように指示します。マスターは、クラスターのノードで実行するコンテナーを調整します。ノードは、マスターによって公開されたKubernetesAPIを使用してマスターと通信します。エンドユーザーは、KubernetesAPIを使用してクラスターと対話することもできます。
Kubernetesは、物理マシンと仮想マシンの両方にデプロイできます。Minikubeを使用してKubernetesクラスターのデプロイを開始できます。
2.MiniKubeとは何ですか
Kubernetesは、物理マシンと仮想マシンの両方にデプロイできます。Minikubeを使用してKubernetesクラスターのデプロイを開始できます。
- Minikubeは、ローカルマシン上にVMを作成し、単純な1ノードクラスターをデプロイする軽量のKubernetes実装です。Minikubeは、Linux、macOS、およびWindowsシステムで使用できます。Minikube CLIは、開始、停止、ステータスの表示、削除など、クラスター作業をブートストラップするためのさまざまな操作を提供します。
実際、MiniKubeでは、マスターノードは他のノードと統合されており、全体がホスト上のkubectlによって管理されているため、より多くのリソースを節約できます。
3.MiniKubeの動作原理
上図のA/B / C/Dは次のとおりです。
- A:Minikubeは、PC上でローカルにkubeconfig構成ファイルを生成します
- B:Minikube仮想環境でMinikube仮想マシンを作成します
- C:Minikubeは仮想マシンでKubernetesを構築します
- D:Kubectlは、kubeconfigを介して仮想マシンのKubernetesを管理します
4.MiniKubeを使用してK8sクラスターを作成します
1.クラスターをセットアップして実行します
MniKubeが正常にインストールされたと仮定して、MiniKubeのバージョンを確認します。
$ minikube version
MiniKubeを起動します。
minikube start
2.コマンドラインインターフェイスkubectlを使用して操作します
Kubectlversionコマンドを確認してください。
kubectl version
$ kubectl version
Client Version: version.Info{
Major:"1", Minor:"20",GitVersion:"v1.20.4",
GitCommit:"e87da0bd6e03ec3fea7933c4b5263d151aafd07c",
GitTreeState:"clean", BuildDate:"2021-02-18T16:12:00Z", GoVersion:"go1.15.8",
Compiler:"gc", Platform:"linux/amd64"}
3.クラスター情報を表示する
クラスタの詳細を表示する
kubectl cluster-info
4.クラスター内のノード情報を照会します
kubectl get nodes //查询所有节点
kubectl get node -A //查询单个节点
このコマンドは、アプリケーションをホストするために使用可能なすべてのノードを表示します。ノードが1つしかないので、その状態の準備ができていることがわかります(デプロイメント用のアプリケーションを受け入れる準備ができています)。
要約する
前のステップでは、MiniKubeを使用して最初のK8sクラスターを作成するプロセスが終了しました。これは非常に簡単です。
この記事では、Kubernetesクラスターについて学び、MiniKubeについて学び、MiniKubeを使用して最初のKubernetesクラスターを作成しました。
K8sシリーズの次の記事では、アプリケーションのデプロイ方法、アプリケーションの理解方法、およびその他の実際の操作について学習します。
MiniKubeクラスターとK8sクラスターの違い
通常、Kubernetesクラスタの完全なセットには、少なくともマスターノードとノードノードが含まれている必要があります。次の図は、従来のk8のクラスタアーキテクチャを示しています。マスターノードは一般に独立しており、他のノードの調整とデバッグ、および実際の操作に使用されます。コンテナのはノードノード上にあり、kubectlはマスターノード上にあります。
次の図は、マスターノードが他のノードと統合され、全体がホスト上のkubectlによって管理される、Minikubeのアーキテクチャです。これにより、リソースをさらに節約できます。
MiniKubeコマンドのリスト
minikubeクラスターで実行されているKubernetesダッシュボードにアクセスします。
minikube dashboard
起動すると、他のKubernetesクラスタと同じように、kubectlを使用してクラスタとやり取りできます。たとえば、サーバーを起動するには、次のようにします。
kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4
NodePortとしてサービスを公開する
kubectl expose deployment hello-minikube --type=NodePort --port=8080
minikubeは、この公開されたエンドポイントをブラウザで簡単に開くことができます。
minikube service hello-minikube
ローカルクラスターを停止して削除します
minikube stop/delete
すべてのローカルクラスターと構成ファイルを削除します
minikube delete --all