Kubernetesは、コンテナ化されたアプリケーションのデプロイに伴う手動プロセスを排除するプラットフォームです。 Kubernetesチュートリアルのこのブログでは、このマルチコンテナ管理ソリューションに関連するすべての概念について説明します。
このチュートリアルでは、次のトピックについて説明します。
- コンテナオーケストレーションなしの課題
- DockerSwarmまたはKubernetes
- Kubernetesとは何ですか?
- Kubernetesの機能
- Kubernetesアーキテクチャ
- Kubernetesケーススタディ
- ハンズオン
さて、このブログを進める前に、コンテナ化について簡単に説明しましょう。
セレンwebdrivertestngフレームワークの例
そのため、コンテナーが作成される前は、開発者とテスターの間には常に違いがありました。これは通常、開発側で機能したものがテスト側では機能しないために発生しました。それらは両方とも異なる環境に存在していました。現在、このようなシナリオを回避するために、開発者とテスターの両方が同じページに表示されるようにコンテナーが導入されました。
多数のコンテナをまとめて扱うことも問題でした。コンテナの実行中に、製品側で、開発段階では存在しなかった問題がほとんど発生しないことがありました。この種のシナリオでは、コンテナオーケストレーションシステムが導入されました。
オーケストレーションシステムについて深く掘り下げる前に、このシステムなしで直面する課題を簡単にリストアップしましょう。
Kubernetesチュートリアル:コンテナオーケストレーションなしの課題
上の図でわかるように、複数のサービスがコンテナー内で実行されている場合は、これらのコンテナーをスケーリングすることをお勧めします。大規模な業界では、これを行うのは非常に困難です。これは、サービスを維持するためのコストが増加し、サービスを並べて実行するのが複雑になるためです。
現在、サービスを手動で設定することを避け、課題を克服するために、何か大きなものが必要でした。ここで、Container OrchestrationEngineが登場します。。
このエンジンを使用すると、基盤となるすべてのマシンが起動され、コンテナーが正常でクラスター環境に分散されるように、複数のコンテナーを編成できます。今日の世界には、主に2つのそのようなエンジンがあります。 知事 & DockerSwarm 。
Kubernetesチュートリアル: KubernetesとDockerSwarm
知事 そして DockerSwarm は、今日の市場で主要なコンテナオーケストレーションツールです。したがって、製品でそれらを使用する前に、それらが正確に何であり、どのように機能するかを知っておく必要があります。
さらに、ブログではKubernetesについて詳しく説明しますが、Dockerについて知るにはクリックしてください 。
上の画像を参照できるように、Kubernetesは、Docker Swarmと比較すると、優れたアクティブコミュニティを所有しており、多くの組織で自動スケーリングを強化しています。同様に、Docker Swarmは、Kubernetesと比較するとクラスターを簡単に起動できますが、DockerAPIの機能に制限されています。
さて、皆さん、これらのトップツールの違いはこれらだけではありません。これら両方のコンテナオーケストレーションツールの詳細な違いを知りたい場合は、をクリックしてください。
Kubernetesについてもっと知りたいですか?スケジューリング、負荷分散、分散などのタスクのためにコンテナを管理して外部に接続する必要があるため、2つから選択できる場合は、Kubernetesである必要があります。
しかし、論理的に考えると、Docker SwarmはDocker上で実行されるため、より適切なオプションになりますか?もし私があなただったら、どのツールを使うべきかについて間違いなく混乱していたでしょう。しかしねえ、Kubernetesは市場で誰もが認めるリーダーであり、より優れた機能を備えたDockerコンテナー上で実行されます。
さて、Kubernetesの必要性を理解したので、今が良い時期です。 Kubernetesとは何ですか?
Kubernetesチュートリアル: Kubernetesとは何ですか?
はオープンソースです コンテナーをコンピューティングクラスターにスケジュールする作業を処理し、ワークロードを管理して、ユーザーが意図したとおりに実行されるようにするシステム。 Googleの発案によるものであり、優れたコミュニティを提供し、すべてのクラウドプロバイダーと見事に連携して マルチコンテナ管理ソリューション。
Kubernetesチュートリアル: Kubernetesの機能
Kubernetesの機能は次のとおりです。
- 自動スケジューリング: Kubernetesは、可用性を犠牲にすることなく、リソース要件やその他の制約に基づいてクラスターノードでコンテナーを起動するための高度なスケジューラーを提供します。
- 自己回復機能: Kubernetesを使用すると、ノードが停止したときにコンテナを置き換えて再スケジュールできます。また、ユーザー定義のヘルスチェックに応答しないコンテナを強制終了し、サービスを提供する準備ができるまでクライアントにアドバタイズしません。
- 自動ロールアウトとロールバック: Kubernetesは、アプリケーションの状態を監視しながら、アプリケーションまたはその構成への変更をロールアウトして、すべてのインスタンスを同時に強制終了しないようにします。問題が発生した場合は、Kubernetesを使用して変更をロールバックできます。
- 水平スケーリングと負荷分散: Kubernetesは、UIを使用して、またはCPU使用率に基づいて自動的に、簡単なコマンドで要件に応じてアプリケーションをスケールアップおよびスケールダウンできます。
Kubernetesチュートリアル: Kubernetesアーキテクチャ
Kubernetesアーキテクチャには次の主要コンポーネントがあります。
- マスターノード
- ワーカー/スレーブノード
それぞれについて一つずつ議論していきます。それで、最初に理解することから始めましょう マスターノード 。
マスターノード
マスターノードは、Kubernetesクラスターの管理を担当します。これは主に、すべての管理タスクのエントリポイントです。フォールトトレランスをチェックするために、クラスター内に複数のマスターノードが存在する場合があります。
上の図でわかるように、マスターノードにはAPIサーバー、コントローラーマネージャー、スケジューラー、ETCDなどのさまざまなコンポーネントがあります。
- APIサーバー: APIサーバーは、クラスターの制御に使用されるすべてのRESTコマンドのエントリポイントです。
- コントローラーマネージャー: Kubernetesクラスターを規制し、さまざまな非終了制御ループを管理するデーモンです。
- スケジューラー: スケジューラーは、タスクをスレーブノードにスケジュールします。各スレーブノードのリソース使用情報を格納します。
- ETCD: ETCDは、シンプルで分散型の一貫性のあるKey-Valueストアです。これは主に、共有構成とサービス検出に使用されます。
ワーカー/スレーブノード
ワーカーノードには、コンテナー間のネットワークを管理し、マスターノードと通信し、スケジュールされたコンテナーにリソースを割り当てるために必要なすべてのサービスが含まれています。
上の図でわかるように、ワーカーノードにはDockerコンテナ、Kubelet、Kubeプロキシ、ポッドなどのさまざまなコンポーネントがあります。
- Dockerコンテナ: Dockerは各ワーカーノードで実行され、構成されたポッドを実行します
- クベレット: KubeletはAPIサーバーからポッドの構成を取得し、説明されているコンテナーが稼働していることを確認します。
- キューバプロキシ: Kube-proxyは、単一のワーカーノード上のサービスのネットワークプロキシおよびロードバランサーとして機能します
- ポッド: ポッドは、ノード上で論理的に一緒に実行される1つ以上のコンテナーです。
Kubernetesアーキテクチャのすべてのコンポーネントの詳細な説明が必要な場合は、 のブログ
Kubernetesで認定を受けたいですか?Kubernetesチュートリアル: Kubernetesケーススタディ
Y ああ! 日本 カリフォルニア州サニーベールに本社を置くWebサービスプロバイダーです。会社がハードウェアの仮想化を目指していたので、会社は使用を開始しました OpenStack 2012年。彼らの内部環境は非常に急速に変化しました。しかし、クラウドとコンテナ技術の進歩により、同社はキャパを望んでいましたさまざまなプラットフォームでサービスを開始する機能。
問題: 1つのアプリケーションコードから必要なすべてのプラットフォームのイメージを作成し、それらのイメージを各プラットフォームにデプロイするにはどうすればよいですか?
理解を深めるために、下の画像を参照してください。コードレジストリでコードが変更されると、ベアメタルイメージ、Dockerコンテナ、およびVMイメージが継続的インテグレーションツールによって作成され、イメージレジストリにプッシュされてから、各インフラストラクチャプラットフォームにデプロイされます。
それでは、コンテナワークフローに焦点を当てて、Kubernetesをデプロイプラットフォームとしてどのように使用したかを理解しましょう。以下の画像を参照して、プラットフォームアーキテクチャを覗いてみてください。
OpenStackインスタンスは、Docker、Kubernetes、Calicoなどを上に置いて使用され、Container Networking、ContainerRegistryなどのさまざまな操作を実行します。
Javaでのtcpソケットプログラミング
クラスターがたくさんあると、それらを正しく管理するのが難しくなりますか?
そのため、Kubernetesに必要な基本機能を提供し、OpenStack環境の管理を容易にするために、シンプルなベースOpenStackクラスターを作成したかっただけです。
イメージ作成ワークフローとKubernetesの組み合わせにより、コードのプッシュからデプロイまでを簡単にする以下のツールチェーンを構築しました。
この種のツールチェーンにより、マルチテナンシー、認証、ストレージ、ネットワーキング、サービス検出など、本番環境への展開に関するすべての要素が考慮されました。
それが人々のやり方です Yahoo!日本 OpenStackで実行されているKubernetesへの「ワンクリック」コードデプロイ用の自動化ツールチェーンを構築しました。 グーグル そして ソリネア 。
ガバナーチュートリアル:実践
このハンズオンでは、デプロイメントとサービスを作成する方法を紹介します。 Kubernetesを使用するためにAmazonEC2インスタンスを使用しています。さて、アマゾンは思いついた Amazon Elastic Container Service ために 知事(Amazon EKS) 、これにより、クラウド内にKubernetesクラスターを非常に迅速かつ簡単に作成できます。詳細については、ブログを参照してください。
ステップ1: 最初 フォルダを作成する その中で、デプロイメントとサービスを作成します。その後、エディターを使用して デプロイメントファイルを開く 。
mkdirhandsOn cdhandsOnvi Deploy.yaml
ステップ2: デプロイメントファイルを開いたら、デプロイするアプリケーションのすべての仕様を記述します。ここで私は展開しようとしています httpd 応用。
apiVersion:apps / v1#APIバージョンの種類を定義します:Deployment #Kindsパラメーターは、ファイルの種類を定義します。ここでは、Deploymentメタデータです:name:dep1#展開仕様の名前を格納します:#[仕様]で、すべてを記述しますデプロイメントレプリカの仕様:3#レプリカの数は3セレクター:matchLabels:アプリ:httpd#検索されるラベル名はhttpdテンプレート:メタデータ:ラベル:アプリ:httpd#テンプレート名はhttpd仕様:#下仕様、コンテナコンテナのすべての仕様について言及します。-名前:httpd#コンテナの名前はhttpdイメージ:httpd:latest#ダウンロードする必要のあるイメージはhttpd:latestポート:-containerPort:80#アプリケーションポート80で公開されます
ステップ3: デプロイメントファイルを作成したら、次のコマンドを使用してデプロイメントを適用します。
kubectl apply -f Deploy.yaml
ここで、-fはに使用されるフラグ名です。t彼はファイルします名前。
ステップ4: ここで、デプロイメントが適用されたら、実行中のポッドのリストを取得します。
kubectl get pods -o wide
ここで、-o wideは、どのノードでデプロイメントが実行されているかを知るために使用されます。
ステップ5: デプロイメントを作成したら、サービスを作成する必要があります。そのためには、再びエディターを使用して空白を開きます サービス。 yamlファイル 。
vi service.yaml
ステップ6: サービスファイルを開いたら、サービスのすべての仕様を記述します。
apiVersion:v1#APIバージョンの種類を定義します:サービス#Kindsパラメーターは、ファイルの種類を定義します。ここでは、サービスメタデータ:name:netsvc#サービス仕様の名前を格納します:#[仕様]で、すべての仕様を指定しますサービスタイプの場合:NodePortセレクター:アプリ:httpdポート:-プロトコル:TCPポート:80 targetPort:8084#ターゲットポート番号は8084です
ステップ7: サービスファイルを書き込んだ後、次のコマンドを使用してサービスファイルを適用します。
kubectl apply -f service.yaml
ステップ8: ここで、サービスを適用して、サービスが実行されているかどうかを確認したら、次のコマンドを使用します。
kubectl get svc
ステップ9: 次に、サービスの仕様を確認し、それがどのエンドポイントであるかを確認しますにバインドするには、次のコマンドを使用します。
kubectl describe svc
ステップ10: これで、amazon ec2インスタンスを使用しているため、Webページをフェッチして出力を確認するには、次のコマンドを使用します。
curlip-address
このKubernetesチュートリアルブログが関連していると感じた場合は、 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。
質問がありますか? 」のコメントセクションでそれについて言及してください Kubernetesチュートリアル 」と私はあなたに戻ります。