あなたはプログラマーです。コードを使用してブログ アプリケーション サービスを作成し、クラウド プラットフォームにデプロイしました。しかし、アプリケーション サービスの人気が高すぎてトラフィックが多すぎたため、頻繁にクラッシュしていました。 写真 そこで、クラッシュしたアプリケーション サービスを自動的に再起動するツールをいくつか使用し、アプリケーション サービスを複数のサーバーに展開して、最終的にアプリケーション サービスが生き残りました。 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 受験者の皆さん、ご注意ください: これらの展開ポイントが役立ちます!
企業がウェブサイトを構築する目的は、大まかに販売重視、ブランド重視、混合重視の3つに分けられます。中...
ほとんどのウェブマスターは「早起きは三文の徳」という慣用句を聞いたことがあると思いますが、この慣用句...
[51CTO.com からのオリジナル記事] クラウド コンピューティングはどのくらい普及しているの...
Kubernetes の世界では、Pod はデプロイ可能な最小単位であり、複数のコンテナが緊密に連携...
Google AdWords のクリック課金キャンペーンを開始するとき、新しいウェブマスターは混乱し...
6月29日から7月2日まで、2018年ソフトウェア博覧会が北京で開催されました。 200社を超える著...
raksmart では、ブラックフライデー プロモーションとして、香港独立サーバー事前予約イベントも...
上の写真のような菊のステッカーをプレゼントしたいと思います。去年時計を買ったんです!ここ二日間、私は...
Apple の次期スマートフォンの名前は依然として謎のままです... iPhone 5? iPhon...
楊城晩報の記者、帥鵬坤氏は「WeChat決済を使えば、Xiaomi 3を1セントで予約できる」「iQ...
現在、60% を超える組織が、新しいアプリケーションの大部分がクラウドで構築されていると報告していま...
[[314897]] LogTool は、オーバークラウド ノードの問題の根本原因を見つけるのに役立...
ウェブマスターは通常、自分のウェブサイトのランキングをチェックします。ランキング上位のウェブサイトへ...
2020 年 10 月は、SAP 製品ライフサイクル管理にとって重要な節目となります。 SAP はシ...
クラウド コンピューティングが登場する前、データ センターが直面していた最大の問題はコストの管理でし...