K8s とは何ですか? また、そのアーキテクチャは何ですか?

K8s とは何ですか? また、そのアーキテクチャは何ですか?

あなたはプログラマーです。コードを使用してブログ アプリケーション サービスを作成し、クラウド プラットフォームにデプロイしました。しかし、アプリケーション サービスの人気が高すぎてトラフィックが多すぎたため、頻繁にクラッシュしていました。

写真

そこで、クラッシュしたアプリケーション サービスを自動的に再起動するツールをいくつか使用し、アプリケーション サービスを複数のサーバーに展開して、最終的にアプリケーション サービスが生き残りました。

k8sコントロールプレーンとNodeの関係

その後、モールアプリケーションサービスや音声アプリケーションサービスも開始されました。アプリケーションサービスの数が増えるにつれて、要件はより多様化しました。一部のアプリケーション サービスは外部ネットワークからのアクセスを望まず、一部のアプリケーション サービスは展開中に正常に実行するために xxGB を超えるメモリを必要とします。各サーバーにログインし、毎回手動で更新を実行する必要があります。エラーが発生しやすいだけでなく、時間の無駄にもなります。

すでに恋人を見つける時間がなかったあなたは、さらに大きな声で泣きます。

そこで質問なのですが、上記の問題を解決する方法はあるのでしょうか?もちろんありますよ。中間層を追加することで解決できないものは何もありません。ある場合は、別のレイヤーを追加します。今回追加する中間層はKubernetesと呼ばれます。

Kubernetes の場所

Kubernetes とは何ですか?

Kubernetes は G のオープンソース成果物です。単語が長すぎるため、真ん中の 8 文字を省略して k8s と略すのが一般的です。

k8sという名前の由来

アプリケーション サービスとサーバーの間に存在し、戦略を通じて複数のアプリケーション サービスを調整および管理できます。アプリケーションのデプロイ順序やその他の情報を定義する yaml ファイル構成のみが必要で、アプリケーションを各サーバーに自動的にデプロイできるほか、障害が発生した場合に自動的に再起動したり、容量を自動的に拡張および縮小したりすることもできます。

すごいですね。どうやってこれらの機能を実現するのでしょうか?

Kubernetes アーキテクチャの原則

上記の機能を実現するために、Kubernetes はサーバーを 2 つの部分に分割します。1 つはコントロール プレーン (以前はマスターと呼ばれていました) と呼ばれ、もう 1 つは作業ノード (Node とも呼ばれます) と呼ばれます。簡単に言えば、彼らの関係は上司と従業員、あるいは今日の一般的な言葉で言えば、トレーナーとパルの関係です。コントロール プレーンは各ノードの制御と管理を担当し、ノードは各アプリケーション サービスを実際に実行する役割を担います。

写真

それぞれの内部アーキテクチャを順番に見ていきましょう。

コントロールプレーンの内部コンポーネント

  • • 従来は、各サーバーにログインしてさまざまなコマンドを手動で実行する必要がありました。これで、これらのサービス リソースを操作するには、k8s によって提供される API インターフェースを呼び出すだけで済みます。これらのインターフェースは、API サーバー コンポーネントによって提供されます。
  • • 以前は、アプリケーションを展開する前に、どのサーバーに十分な CPU とメモリ リソースがあるか調べる必要がありました。これで、この決定ロジックはスケジューラによって完了します。
  • • サーバーを見つけた後、以前はサービスを手動で作成してシャットダウンしていましたが、現在はこの機能はコントローラー マネージャーによって処理されます。
  • • 上記の関数はいくつかのデータを生成するので、後続のロジックを容易にするために保存する必要があります。したがって、k8s にはさまざまなデータ情報を保存するためのストレージ層も必要になります。現在はetcdが使用されています。ソースコードのこの部分は非常に分離されており、将来的には他のミドルウェアをサポートするために拡張される可能性があります。

上記はコントロール プレーン内のコンポーネントです。

k8s コントロール プレーン コンポーネント

次に、Node のコンポーネントを見てみましょう。

ノード内部コンポーネント

ノードは実際に動作するノードであり、ベアメタル サーバーまたは仮想マシンのいずれかになります。さまざまなアプリケーション サービスを実際に実行する役割を担います。複数のアプリケーション サービスが、ノード上のメモリや CPU などのコンピューティング リソースを共有します。

ノードはベアメタルサーバーまたは仮想マシンになります

記事の冒頭では、複数のアプリケーション サービスを展開するシナリオについて説明しました。以前はコードをサーバーにアップロードする必要がありましたが、k8s を使用した後は、サービス コードをコンテナー イメージにパッケージ化し、コマンド 1 行でデプロイするだけで済みます。

コンテナ イメージの意味がわからない場合は、アプリケーション コードと依存するシステム環境の圧縮パッケージとして理解するだけで十分です。圧縮されたパッケージを任意のマシンで解凍して、サービスを通常どおり実行できます。イメージをダウンロードしてデプロイするには、Node にコンテナ ランタイム コンポーネントが必要です。

コンテナイメージを圧縮パッケージとして大まかに理解する

各アプリケーション サービスはコンテナーと見なすことができ、ほとんどの場合、アプリケーション サービスはログ コレクター コンテナーまたは監視コレクター コンテナーとペアリングされます。複数のコンテナが一緒になってポッドを形成し、ポッドはノード上で実行されます。

ポッドには複数のコンテナがあります

k8s は、あるノードから別のノードにポッドをスケジュールすることができ、また、ポッドを再起動したり、動的にスケールアップまたはスケールダウンしたりすることもできます。したがって、Pod は k8s における最小のスケジューリング単位です。

ノードスケジューリングポッド

さらに、前述したように、コントロール プレーンはコントローラー マネージャー (API サーバー経由) を使用してノードを制御し、サービスを作成およびシャットダウンします。これらのアクションを実行するには、ノードにこのコマンドを受信できるコンポーネントも必要です。このコンポーネントは kubelet と呼ばれ、主に Pod の管理と監視を担当します。最後に、ノードには Kube Proxy があり、これがノードのネットワーク通信機能を担当します。これにより、外部リクエストを Pod に転送できるようになります。

コントロールプレーンとノードコンポーネント

クラスタ

コントロール プレーンとノードが一緒にクラスターを構成します。社内では、テスト環境用のクラスター 1 つと本番環境用のクラスター 1 つというように、複数のクラスターを構築することが一般的です。同時に、クラスター内のサービスを外部ユーザーに公開するために、通常は Ingress コントローラー (Nginx など) などのエントリ コントローラーをデプロイします。これにより、外部ユーザーがクラスターの内部サービスにアクセスするためのエントリを提供できます。

生産環境とテスト環境

kubectlとは

上記では、k8s が提供する API を使用してサービスを作成できると述べましたが、これらの API を呼び出すために独自のコードを記述する必要があるかどうかが疑問です。答えはノーです。 K8s にはコマンドライン ツール kubectl が用意されています。コマンドを実行するだけで、内部的に k8s API が呼び出されます。

kubectlはk8s APIを呼び出す

次に、デプロイメント サービスを例にして、k8s がどのように機能するかを見てみましょう。

サービスを展開するには?

まず、Pod で使用されるイメージ、占有されるメモリと CPU の量、およびその他の情報を定義する YAML ファイルを作成する必要があります。次に、kubectl コマンドライン ツールを使用して、kubectl apply -f xx.yaml を実行します。このとき、kubectl は YAML ファイルを読み取って解析し、解析されたオブジェクトを API リクエストを通じて Kubernetes コントロール プレーンの API サーバーに送信します。 API サーバーは、要件に応じて etcd によって提供されるデータを通じて適切なノードを見つけるようにスケジューラを駆動します。コントローラー マネージャーは、API サーバーを通じてサービスを作成するためにノードを制御します。コマンドを受信すると、ノード内の kubelet は Container ランタイム コンポーネントに基づいてイメージをプルしてコンテナを作成し、最終的に Pod の作成を完了します。

サービスが作成されました。

アプリケーションサービスの導入

プロセス全体を通して、yaml ファイルを記述して kubectl コマンドを 1 回実行するだけで済みます。これは以前よりもはるかに簡単です。サービスをデプロイした後、サービスがどのように呼び出されるかを見てみましょう。

サービスを呼び出すにはどうすればいいですか?

以前は、外部ユーザーの Xiao Ming はブラウザで直接 http リクエストを送信し、それがサーバー上の Nginx に到達して、デプロイされたサービスに転送されていました。 k8s を使用すると、外部リクエストはまず Kubernetes クラスターの Ingress コントローラーに到達し、次にリクエストは Kubernetes 内のノードの Kube Proxy に転送され、対応するポッドが見つかり、次に内部コンテナ サービスに転送され、処理結果が元のパスに沿って返され、サービス呼び出しが完了します。

ユーザーがk8sでアプリケーションサービスを呼び出すプロセス

この時点で、k8s の動作原理について大まかに理解できました。本質的には、アプリケーション サービスとサーバー間の中間層です。一連の API 機能を公開することで、サービスの展開と運用プロセスを簡素化できます。

さらに、多くの中規模企業や大規模企業が、これらの API 機能に基づいて独自のサービス管理プラットフォームを構築しています。プログラマーは kubectl コマンドを入力する必要がなくなりました。インターフェースを数回クリックするだけで、サービスの展開や拡張などの操作を完了できます。本当に使いやすいです。

要約する

• k8s は、大規模なコンテナ サービスを管理するために使用される G のオープン ソース ツールです。

• k8s クラスターはコントロール プレーンとノードに分かれています。コントロール プレーンは命令を発行する役割を担う頭脳であり、ノードはタスクを実行する役割を担う手足です。

• コントロール プレーンには、API サーバー、スケジューラ、コントローラ マネージャー、etcd などのコンポーネントが含まれます。 Node には、Pod、Kubelet、コンテナ ランタイム、Kube Proxy などのコンポーネントが含まれています。コントロール プレーンと Node が一緒にクラスターを形成します。

• この記事では、サービスのデプロイ方法とサービスの呼び出し方法という 2 つの例を通じてこれらのコンポーネントを関連付け、誰もが理解を深めるのに役立ちます。

<<:  一般的な Kubernetes 終了コードの解釈

>>:  CKA 受験者の皆さん、ご注意ください: これらの展開ポイントが役立ちます!

推薦する

ウェブマスターと一緒に歩き、タオバオアフィリエイトコンテストがウェブマスターにもたらす機会を確認します

2012年はインターネットが急成長した年でした。一方では、インターネット大手が激しい戦いを繰り広げて...

アイバンの社内メールで利益を上げる方法が明らかに:従業員の半数を解雇し、共同購入を削減

5年間赤字が続いていた地元検索サービスプロバイダーのアイバンは、今年第3四半期に黒字に転じ、新たな資...

外部リンク削減の理由と解決策

中国では百度がボスだ。 Baidu の悲喜こもごもウェブサイトの状況に影響を及ぼし、すべてのウェブマ...

体験投稿: 地域アプリまたはWeChatパブリックアカウントのプロモーションに関する考察

地域プロモーションは、オフラインプロモーションとオンラインオペレーションを含む地上プロモーションとも...

日本サーバー

日本サーバー:日本のコンピュータルームのハードウェア条件は非常に良好で、国際輸出帯域幅が大きく、中国...

SEOウェブサイト最適化を行う際にキーワード密度を適切に制御する方法

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス最適化担当者の中には、キ...

SEO担当者は360度検索を過小評価してはいけません。360度検索に注目するべき理由

Senmao Technologyは最近、360度検索が大人気であることを発見しました。初心者として...

競合他社の分析を上手に行い、ウェブサイトを「無敵」にしましょう

昨今、ウェブサイトの数が多すぎます。業種やウェブサイトの種類を問わず、数千、数万のウェブサイトが存在...

コンテナがクラウドを支配する理由: Kubernetes の台頭

Kubernetes は、ノード クラスター全体にわたるデプロイメント、スケジュール設定、スケーリン...

ultimatehostings-7ドル/KVM/2gメモリ/75gハードディスク/2IP/1Tトラフィック

UltimateHostings は 2010 年に設立された VPS プロバイダーです。年末プロモ...

熱狂のワールドカップが世界のCNドメイン名を19.9元、最低価格でリンク!

4年に一度の「スピードと情熱」の祭典が6月に開幕します。奇跡のワールドカップが60億人の熱狂を呼び起...

Amazon SageMaker が DerbySoft のホテル客室空室状況クエリの精度向上に貢献

【2020年10月12日】記者は、DerbySoft(上海)有限公司から、同社がAmazon Clo...

swedendeddicated: スウェーデンの苦情に強い VPS と専用サーバー。月額 5 ユーロから

swedendedicated について紹介します。同社は 2006 年にゲーム サーバーと仮想ホス...

increhost-7 USD/2 GB RAM/KVM/7 GB SSD/1 TB トラフィック

2GB のメモリと 7GB の SSD を搭載した 7 ドルの KVM VPS はいかがでしょうか?...

新しいウェブサイトを立ち上げるのは急がないでください。すべては可能です。

私はしばらくウェブサイトの制作に携わっており、そこから多くのことを学びました。新しく立ち上げたウェブ...