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

推薦する

クラウドコスト最適化の6つの秘訣

クラウドのコストが急騰していることは周知の事実です。あまり知られていないが、多くのクラウド ユーザー...

新しい形の人工知能が登場: AIaaSについてお話しましょう

「サービスとしての」配信モデルの誕生以来、SaaS と PaaS は日常的な技術用語の一部となり、企...

microtronix: 月額 3.5 ドル、米国での無制限トラフィック VPS、1G メモリ/4 コア/30g SSD/1Gbps 帯域幅

Microtronix は、同社の公式声明によれば、2001 年から事業を展開している。同社と自社の...

電子商取引ブランドのメディアトレンド分析

世界は急速に変化しています。テクノロジーが私たちの生活に与える影響は想像以上に深刻で、マーケティング...

ゲーム業界を例にとると、情報フロー広告のテストコストが6分の1に削減されました

テストは、キャンペーンを開始する上で最初かつ最も重要なステップです。テストによって、顧客がこのチャネ...

2017 雲奇北京サミット: アリババの AI 産業レイアウトを公開

[51CTO.com からのオリジナル記事] 昨年の Yunqi Conference Beijin...

ウェブマスターネットワークニュース:51 Fanli.comのキャッシュバック方式が批判され、Sinaはポルノで510万元の罰金を科せられた

1. 51Fanli.comのキャッシュバック方式は批判され、79万元全額を換金するには12年かかる...

ウェブサイト運営で見落としがちな3つのこと

この記事は主に、産業用不動産ウェブサイトの運営において避けるべきいくつかの問題について説明しています...

アメリカは世界のスーパーコンピューティングを支配しているのか?あまり知られていない中国のチップを発見

スーパーコンピューターは、あらゆるコンピューターの中で最も高速かつ強力なコンピューターです。科学研究...

従来型企業が独立系B2Cモールを構築する上で直面する問題

伝統的な企業がインターネットに参入し、独立したB2Cショッピングモールを設立する際に遭遇する問題と困...

クラウド コンピューティングはどのようにして最も収益性の高いビジネスへと進化したのでしょうか?

アリババは11月5日、2020年9月30日までの2021年第2四半期の決算を発表した。その中で、アリ...

エンタープライズO2Oマーケティングの10原則 プラットフォームユーザーの視点からO2Oを見る

O2Oに関しては、起業家たちがプラットフォームの構築に群がります。しかし、O2O は本質的にはアイデ...

ShanglongがChinaHR.comを買収:統合の難しさを過小評価すべきではない

「経営陣が入れ替わると思っていましたが、買収前にChinaHR.comがあれほど騒ぎ立てていたことを...

Prometeus 超大型ハードドライブ KVM が登場

イタリアの老舗ホスティング会社 Prometeus が、英国に新会社 iperweb を設立しました...

長期 SEO 戦略の完全ガイド - 検索エンジンの観点から SEO を見る

業界に入るときの疑問業界に初めて参入する場合、キーワード密度、外部リンクなど、SEO に関する非常に...