クラウドネイティブテクノロジー Kubernetes (K8S) の紹介

クラウドネイティブテクノロジー Kubernetes (K8S) の紹介

今日はKubernetesテクノロジーの紹介を見ていきます。最近、Geek TimeでZhang Lei先生のKubernetesテクノロジーに関する詳細なプレゼンテーションを見ました。とてもよくまとめられていました。興味のある学生は聞いてみてください。Kubernetesテクノロジーを理解するのにとても役立ちます。ここでは、自分の進歩に合わせて学習ノートを共有します。

今日は、私たちはより高い角度に立っており、より概念的なものがあります。

01 Kubernetes とは何ですか?

以前はこの質問に答えるのは簡単だと思っていましたが、Kubernetes を理解してさらに深く調べていくうちに、この質問に包括的に答えるのは難しいことがわかりました。

この問題を理解するには、まずコンテナとは何かを知る必要があります。前回の記事では、コンテナは特別なプロセスであり、実際には Namespace、Cgroup、rootfs の 3 つのテクノロジーによって構築された特別なプロセス分離環境であると述べました。 この分離された環境の主な目的は、独自のアプリケーションを実行することです。

クラウドベンダーにとって、ユーザーが提出したDockerイメージを自社プラットフォームのコンテナ環境で実行し、適切に管理できれば、このクラウドプラットフォームは商業的価値を持つことになります。実際、これは確かに達成されています。

ただし、ユーザーの認知度を高めたい場合、1 つのコンテナや 1 人のユーザーの Docker イメージをサポートするだけでなく、無数の開発者と大規模なコンテナ クラスターをサポートして、プラットフォームがクラウド ネイティブ エコシステム全体で認知されるようにすることが重要です。この現実に基づくと、コンテナ クラスターの管理をより適切に整理、スケジュール、オーケストレーション、標準化できる人がコンテナ分野で優遇されることは容易に想像できます。

ここでは、スケジュールと振り付けという 2 つの単語を赤でマークしました。この 2 つの単語について説明する必要があります。

スケジューリング: 特定のルールに従ってコンテナを最適なノードに配置して実行する

オーケストレーション: ユーザーの希望とシステム全体のルールに従って、コンテナ間の関係を完全に自動的に処理します。

このような背景から、Docker のネイティブ Compose+Swarm の組み合わせと Google の Kubernetes プロジェクトが誕生しました。最終的に Kubernetes が勝利したのはなぜでしょうか?ゆっくり見ていきましょう。

Kubernetes プロジェクトの理論的基礎は、そのエンジニアリング実践よりも先進的です。Kubernetes プロジェクトは、Google のインフラストラクチャの中核システムである Borg から生まれました。他のコンテナ オーケストレーション プロジェクトと比較して、一連の「先進性」と「完全性」を体現しており、これらの特徴は Kubernetes プロジェクトが依拠する中核的な価値となっています。

Kubernetes の登場により、コンテナ オーケストレーション、スケジューリング、およびクラスター管理のボトルネックが解消されました。また、ユーザーの悩みの種である「アプリケーションのコンテナ イメージがあります。このアプリケーションをクラスターで実行できるようにしてください。」も解決されました。ただし、これは Compose+Swarm アーキテクチャを置き換えるには不十分です。Docker のネイティブ Compose+Swarm アーキテクチャは、コンテナの操作と基本的な運用保守管理機能も解決できるためです。

Kubernetes がさらに価値あるものとなるのは、最初から特定のコンテナ Docker に合わせて設計されていないことです。Kubernetes は Docker を基盤となるコンテナ実装としてのみ扱います。Kubernetes が解決することに重点を置いている問題は、大規模に実行されるタスク間には実際にはさまざまな関係があるということです。これらの関係の処理は、タスク オーケストレーションとシステム管理の最も難しい部分です。

これらのタスク間には、Web アプリケーションと MySQL データベースの関係、ロード プロキシとバックエンド サービスの関係など、さまざまな種類の関係があります。

従来の仮想マシンでは、タスク間で TCP または HTTP 要求が発生するため、通常、これらのタスクを一緒に展開してこのタイプのタスクを処理します。しかし、コンテナ技術の登場以降、ミラーリングによって各タスクを異なるコンテナにカプセル化できるようになりました。タスクは互いに干渉せず、独自のリソース構成を持ち、クラスターによって異なるマシンにスケジュールすることもできます。次のように:

02 KubernetesとCompost+Swarmの違い

タスク間のこのような関係処理は、Kubernetes プロジェクトと Compost+Swarm アーキテクチャの最も明らかな違いでもあります。

Web アプリケーションと MySQL サービスを例にとると、Compost+Swarm アーキテクチャでは、2 つのサービス間に「リンク」が定義され、Docker プロジェクトがこの「リンク」を維持する責任を負います。 Docker は、アプリケーション プロセスで使用する環境変数として、DB コンテナの IP とポートをこの Web アプリケーションのコンテナに挿入します。DB コンテナの接続情報が変更されると、環境変数が更新されます。

Compost+Swarm 設計パターンは、Web アプリケーションと MySQL サービス間の接続をより適切にサポートできますが、将来的にはより多くの種類のタスク間の接続が存在する可能性があり、依存関係を処理するこの単純な機能では確実にボトルネックが発生します。

Kubernetes プロジェクトの主な設計思想は、タスク間のさまざまな関係をよりマクロな観点から統一的に定義し、将来的にさらに多くの種類の関係をサポートする余地を残すことです。

たとえば、Kubernetes はコンテナ間の相互呼び出しを分類して、どの相互作用が頻繁な TCP 相互作用であるか、どの相互作用が単なるディスク ファイル相互作用であるかなどを区別します。相互作用を必要とするこれらのタスクの場合、従来の方法では、さまざまなタスクを同じマシンにデプロイし、Localhost を介して通信します。Kubernetes では、サービスの概念が導入され、本来は相互に依存している 2 つのサービスを異なるマシンにデプロイできるようになりました。各サービスの背後には複数のポッドがあります。サービスの機能は、ポッドに固定のプロキシ エントリを提供することであり、ポッドの分散は完全にランダムです。

このように、Web アプリケーション Pod にとって、考慮する必要があるのは、データベース Pod のサービス情報だけです。サービス バックエンドが実際にプロキシする Pod の IP アドレス、ポート、およびその他の情報の自動更新とメンテナンスが Kubernetes プロジェクトの責任であることは想像に難くありません。

03 まとめ

今日は、コンテナの最も基本的な概念から始めて、k8sの背景を説明しました。また、WebアプリケーションとMySQLサービス間の「緊密な連携」を通じて、これをPodに拡張しました。Podでは、一度に複数のアプリケーションインスタンスを起動したいので、PodのマルチインスタンスマネージャーであるDeploymentが必要です(後述)。また、このような同一のPodのグループには、固定IPアドレスとポートを介して負荷分散された方法でアクセスする必要があるので、Serviceが必要です。WebアプリケーションがMySQLにアクセスするためにアカウントとパスワードが必要な場合は、Secretを導入します...最後に、次の図が表示されます。

具体的な内容については後ほど分析します。 。 。

私がここまで長々と述べてきたのは、Kubernetes プロジェクトが、管理機能ごとに指示を作成してからプロジェクト内でロジックを実装する他のプロジェクトとは異なることを主に表現するためです。
対照的に、Kubernetes プロジェクトでは、次のアプローチを推奨します。
1. まず、Pod、Job、CronJob などの「オーケストレーション オブジェクト」を通じて管理しようとしているアプリケーションについて説明します。
2. 次に、Service、Secret、Horizo​​ntal Pod Autoscaler などのいくつかの「サービス オブジェクト」を定義します。これらのオブジェクトは、特定のプラットフォーム レベルの機能を担当します。
この使用方法は、いわゆる「宣言型 API」です。この API に対応する「オーケストレーション オブジェクト」と「サービス オブジェクト」は、どちらも Kubernetes プロジェクト内の API オブジェクトです。
これが Kubernetes のコアとなる設計コンセプトです。

今日はこれで終わりです。

以上がクラウドネイティブテクノロジー kubernetes (K8S) の詳しい紹介です。クラウドネイティブテクノロジー kubernetes (K8S) の詳細については、123WORDPRESS.COM の他の関連記事もご覧ください。

以下もご興味があるかもしれません:
  • Kubernetes でのトラブルシューティングに一時コンテナを使用する方法
  • クラウドネイティブ Kubernetes 初期化コンテナで Init を使用するチュートリアル
  • Kubernetes プローブの紹介
  • クラウドネイティブテクノロジーKubernetesにおけるボリュームコンテナの使用
  • Kubernetes のデプロイメントを視覚化する 10 のステップ

<<:  MySQL レプリケーション問題の 3 つのパラメータの分析

>>:  HTML でのアンカーポイントの適用

推薦する

Vue カプセル化 TabBar コンポーネントの完全なステップ記録

目次実装のアイデア:ステップ 1: TabBar と TabBarItem のコンポーネント カプセ...

MySQL 5.7.17 圧縮パッケージのインストールと設定方法のグラフィックチュートリアル

インターネット上にはMySQL 5.7.17のインストールチュートリアルがほとんどなく不十分なので、...

ページコードの変更の効率を向上させ、HTML言語のコア知識を習得します。

ウェブサイトを構築するとき、HTML 言語は重要ではないと思われるかもしれませんが、実際には、基本的...

Linux システム AutoFs 自動マウント サービスのインストールと構成

目次序文1. サービスプログラムをインストールする2. メイン設定ファイルを書く3. サブ構成ファイ...

TypeScript ジェネリックを簡単に説明する方法

目次概要ジェネリック医薬品とはビルドシステムジェネリック医薬品の一般的な理解ジェネリッククラスジェネ...

mysql8.0.11データディレクトリ移行の実装

mysql のデフォルトのストレージ ディレクトリは/var/lib/mysql/です。以下は、デフ...

よくある MySQL テーブル設計エラーの概要

目次間違い1: データの列が多すぎる誤解2: 共同クエリが多すぎる誤解3: ENUMの代わりにSET...

JavaScriptのモジュール性を理解する方法

目次1. ブラウザのサポート2.エクスポートモジュールのエクスポート3. モジュールをインポートする...

VMWare に CentOS 7.3 をインストールするグラフィカル チュートリアル

CentOS 7.3のインストール手順を図解しました。具体的な内容は次のとおりです。この記事では、v...

Centos7 に PHP と Nginx をインストールする詳細なチュートリアル

Centos のサーバー側への適用がますます普及するにつれて、Centos7 もますます使用されるよ...

HTML 文法百科事典_HTML 言語文法百科事典 (必読)

ボリュームラベル、プロパティ名、説明002 <! - - ... - -> コメント00...

ネイティブJavaScriptでカルーセルを実装する

この記事では、JavaScriptでカルーセルを実装するための具体的なコードを参考までに紹介します。...

MySQLの誤操作後にbinlog2sqlを使用して素早くロールバックする方法の詳細な説明

序文日常の仕事や勉強では、データベースを操作するときに「不注意」によるミスを犯すことは避けられません...

Matlab による JavaScript プログラミング、重心アルゴリズムによる位置決め学習

目次Matlab セントロイドアルゴリズムMatlab はクローズドな商用ソフトウェアであり、米国政...

JSは写真の自動再生効果を実現します

この記事では、写真の自動再生効果を実現するためのJSの具体的なコードを参考までに紹介します。具体的な...