あなたはプログラマーです。コードを使用してブログ アプリケーション サービスを作成し、クラウド プラットフォームにデプロイしました。しかし、アプリケーション サービスの人気が高すぎてトラフィックが多すぎたため、頻繁にクラッシュしていました。 写真 そこで、クラッシュしたアプリケーション サービスを自動的に再起動するツールをいくつか使用し、アプリケーション サービスを複数のサーバーに展開して、最終的にアプリケーション サービスが生き残りました。 k8sコントロールプレーンとNodeの関係 その後、モールアプリケーションサービスや音声アプリケーションサービスも開始されました。アプリケーションサービスの数が増えるにつれて、要件はより多様化しました。一部のアプリケーション サービスは外部ネットワークからのアクセスを望まず、一部のアプリケーション サービスは展開中に正常に実行するために xxGB を超えるメモリを必要とします。各サーバーにログインし、毎回手動で更新を実行する必要があります。エラーが発生しやすいだけでなく、時間の無駄にもなります。 すでに恋人を見つける時間がなかったあなたは、さらに大きな声で泣きます。 そこで質問なのですが、上記の問題を解決する方法はあるのでしょうか?もちろんありますよ。中間層を追加することで解決できないものは何もありません。ある場合は、別のレイヤーを追加します。今回追加する中間層はKubernetesと呼ばれます。 Kubernetes の場所 Kubernetes とは何ですか?Kubernetes は G のオープンソース成果物です。単語が長すぎるため、真ん中の 8 文字を省略して k8s と略すのが一般的です。 k8sという名前の由来 アプリケーション サービスとサーバーの間に存在し、戦略を通じて複数のアプリケーション サービスを調整および管理できます。アプリケーションのデプロイ順序やその他の情報を定義する yaml ファイル構成のみが必要で、アプリケーションを各サーバーに自動的にデプロイできるほか、障害が発生した場合に自動的に再起動したり、容量を自動的に拡張および縮小したりすることもできます。 すごいですね。どうやってこれらの機能を実現するのでしょうか? Kubernetes アーキテクチャの原則上記の機能を実現するために、Kubernetes はサーバーを 2 つの部分に分割します。1 つはコントロール プレーン (以前はマスターと呼ばれていました) と呼ばれ、もう 1 つは作業ノード (Node とも呼ばれます) と呼ばれます。簡単に言えば、彼らの関係は上司と従業員、あるいは今日の一般的な言葉で言えば、トレーナーとパルの関係です。コントロール プレーンは各ノードの制御と管理を担当し、ノードは各アプリケーション サービスを実際に実行する役割を担います。 写真 それぞれの内部アーキテクチャを順番に見ていきましょう。 コントロールプレーンの内部コンポーネント
上記はコントロール プレーン内のコンポーネントです。 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 つの例を通じてこれらのコンポーネントを関連付け、誰もが理解を深めるのに役立ちます。 |
>>: CKA 受験者の皆さん、ご注意ください: これらの展開ポイントが役立ちます!
クラウドのコストが急騰していることは周知の事実です。あまり知られていないが、多くのクラウド ユーザー...
「サービスとしての」配信モデルの誕生以来、SaaS と PaaS は日常的な技術用語の一部となり、企...
Microtronix は、同社の公式声明によれば、2001 年から事業を展開している。同社と自社の...
世界は急速に変化しています。テクノロジーが私たちの生活に与える影響は想像以上に深刻で、マーケティング...
テストは、キャンペーンを開始する上で最初かつ最も重要なステップです。テストによって、顧客がこのチャネ...
[51CTO.com からのオリジナル記事] 昨年の Yunqi Conference Beijin...
1. 51Fanli.comのキャッシュバック方式は批判され、79万元全額を換金するには12年かかる...
この記事は主に、産業用不動産ウェブサイトの運営において避けるべきいくつかの問題について説明しています...
スーパーコンピューターは、あらゆるコンピューターの中で最も高速かつ強力なコンピューターです。科学研究...
伝統的な企業がインターネットに参入し、独立したB2Cショッピングモールを設立する際に遭遇する問題と困...
アリババは11月5日、2020年9月30日までの2021年第2四半期の決算を発表した。その中で、アリ...
O2Oに関しては、起業家たちがプラットフォームの構築に群がります。しかし、O2O は本質的にはアイデ...
「経営陣が入れ替わると思っていましたが、買収前にChinaHR.comがあれほど騒ぎ立てていたことを...
イタリアの老舗ホスティング会社 Prometeus が、英国に新会社 iperweb を設立しました...
業界に入るときの疑問業界に初めて参入する場合、キーワード密度、外部リンクなど、SEO に関する非常に...