複雑なアプリケーションを高可用性、スケーラビリティ、移植性を備え、小さなモジュールで独立してデプロイできるようにするという切迫したニーズから、Kubernetes が誕生しました。 今日は以下の内容を取り上げます:
Kubernetes とは何ですか?Kubernetes は一般に K8s として知られています。 K8s は、Google が開発した本番環境レベルのオープンソース コンテナ オーケストレーション ツールであり、ローカル、クラウド、仮想マシンなどの複数のデプロイメント環境をサポートするコンテナ化/Docker 化されたアプリケーションの管理に役立ちます。 K8s はコンテナ化されたイメージの展開を自動化し、水平方向に拡張して高いレベルのアプリケーション可用性をサポートします。 K8sを選ぶ理由K8S はどのような問題を解決しますか?K8s がこれほど普及した主な理由の 1 つは、マイクロサービス主導のアーキテクチャのニーズをサポートしたいという企業からの需要が高まっていることです。 マイクロサービス アーキテクチャは企業にとって次の点で役立ちます。
従来のモノリシック サービスからマイクロサービスに移行したいという企業の要望により、大規模なコンテナ化されたアプリケーションが作成されるようになりました。各コンテナ イメージはそれ自体がマイクロサービスであり、オーバーヘッドを抑えて効率的に管理および拡張する必要があります。何千ものコンテナを処理するという要件は、組織にとって面倒な作業です。この問題により、K8s は人気のコンテナ オーケストレーション ツールの 1 つに進化しました。 組織は Kubernetes などのコンテナ オーケストレーション ツールを採用し、次のような主なメリットを得ました。 K8s はどのような機能を提供しますか?
K8sを使用する理由がわかったので、次はK8sの基盤となるアーキテクチャを解読しましょう。 Kubernetes クラスターの基本的なアーキテクチャ:Kubernetes クラスターの最も基本的なアーキテクチャには、次の 2 つのメインノードがあります。
Kubernetes の公式ドキュメントに従うと、その概念を理解するのは非常に困難になります。したがって、必要な単純化を加えて同じことを理解しようとします。 まず、K8sのワーカーノードまたはスレーブノードがどのように機能するか、そしてワーカーノードの主要コンポーネントは何かを理解しましょう。 K8s クラスター内の作業ノード:図 2.0: K8s クラスターのワーカーノードコンポーネント 開発者または K8s 管理者は、コンテナ化されたアプリケーションをデプロイして自動スケーリングする必要がある場合でも、実稼働グレードのサーバーで新しいアプリケーションの更新を展開する必要がある場合でも、ほとんどの場合、ワーカー ノードを扱うことになります。 このノードは、クラスター管理者または開発者が必要とする実際の作業を実行するため、ワーカー ノードと呼ばれます。ワーカー ノードには、コンテナー化されたアプリケーションを抽象化した 1 つ以上のポッドを含めることができます。図 2.0 に示すように、各ワーカーは次の 3 つの主要なプロセスを実行します。
コンテナランタイム:デプロイする各マイクロサービス モジュール (マイクロ アプリ) は、独自のコンテナー ランタイムを持つ個別のコンテナーにパッケージ化されます。ポッドがクラスター内で実行できるように、コンテナー ランタイムをクラスター内の各ワーカー ノードにインストールする必要があります。 コンテナ ランタイムの例をいくつか示します。
クベレット:kubelet はワーカーノードのメインノードエージェントであり、特定のワーカーノード内のノードおよびコンテナと対話します。 kubelet は次のことを行います。
Kubernetes クラスターでは、kubelet は Kubernetes API サーバーを通じて PodSpecs を監視します。 PodSpec は、Pod を記述する YAML または JSON オブジェクトです。 kubelet は、さまざまなメカニズム (主に API サーバー経由) によって提供される一連の PodSpec を受け取り、それらの PodSpec で記述されているコンテナーが実行され、正常であることを確認します。
Kube プロキシ:K8 クラスターには複数のワーカー ノードを含めることができ、各ノードでは複数のポッドが実行されているため、このポッドにアクセスする必要がある場合は、Kube-proxy を介してアクセスできます。
k8s サービスを通じて Pod にアクセスするために、クラスター内外のネットワーク セッションから Pod へのネットワーク通信を許可するネットワーク ポリシーがあります。これらのルールはkube-proxyによって処理されます kube-proxy には、Pod アクセスに必要なネットワーク トラフィックを転送するインテリジェントなアルゴリズムがあり、オーバーヘッドを最小限に抑えてサービス通信をより効率的にします。 これまで、コンテナ化されたアプリケーションを効果的に管理するためには、これら3つのプロセスがワーカーノードに正常にインストールされ、実行されている必要があることを見てきましたが、より大きな問題は
その答えは「マスターノード」という概念にあります。これについては以下で説明します。 K8s クラスターのマスターノード:図: 3.0 K8 のマスターノードプロセス マスター ノードはコントロール プレーンとも呼ばれ、ワーカー/スレーブ ノードを効率的に管理する役割を担います。ワーカーノードと対話して
マスターノードプロセス:K8s クラスター内の各マスターノードは、次の主要なプロセスを実行します。
それぞれのプロセスを詳しく見てみましょう。 kube-apiserver:これは、k8s クラスターにアクセスするためのメインゲートウェイであり、クライアントレベルの認証のメインゲートキーパーとして機能します。つまり、kube-apiserver は Kubernetes コントロールプレーンのフロントエンドであると言えます。 したがって、次のことが必要な場合:
マスター ノードの API サーバーにリクエストを送信し、ワーカー ノードのプロセスにアクセスする前にリクエストを認証する必要があります。
K8s マスターノードの kube-scheduler:K8s 管理者/開発者として、ワーカー ノードで新しいポッドをスケジュールする場合は、マスター API サーバーにリクエストを送信して、Kube スケジューラ プロセスを呼び出します。ここでのスケジューラは、このポッドを配置するワーカーノードをインテリジェントに決定します。 したがって、kube-scheduler を次のように定義できます。
これにより、各ノードのリソース レベルの可用性に基づいて、新しく作成された Pod をどのワーカー ノードに配置するかが決定されます。スケジューラはリソース レベルのクエリを実行し、重要なスケジュール決定を行います。 スケジューラ レベルの決定の実際の実行は、特定のワーカー ノード内の kubelet プロセスによって行われます。 Pod のスケジュール設定の主な決定要因は次のとおりです。
k8s については後ほど詳しく説明し、上記の制限とポリシーについて学習します。 kube-controller-manager (Kubectl):これは、ワーカー ノード レベルの障害ステータスを監視するマスター ノード内の重要なプロセスの 1 つです。このような出来事を注意深く見守るだろう ワーカーノード内のいずれかのポッドのクラッシュそして、そのようなイベントを検出すると、スケジューラに、デッド/障害が発生したポッドを再起動または再スケジュールするように要求します。
K8s マスターノードの etcd:マスター コントロール プレーンの etcd は、さまざまなクラスター レベルの変更をキーと値のペアの形式で保存する役割を担います。 これは、クラスター内で発生する変更の詳細をすべて記録する、k8s クラスターの頭脳として簡単に考えることができます。 たとえば、ワーカーノードで Pod がクラッシュして再スケジュールする必要がある場合、それはキーと値のペアとして etcd に保存され、ノードでの Pod の再スケジュールのイベントもここに記録されます。 したがって、データは次のような重要な質問に関連しています。
実際にここに保存されるのは、k8sクラスタがこれを認識し、それに応じてインテリジェントなアクションを実行するためです。 知らせ! DB などのアプリケーション レベルのデータは etcd に保存されません。 Kubernetes コンポーネント:K8s のアーキテクチャ プロセスを理解したので、次は、本番環境レベルのコンテナ オーケストレーションに役立つ K8s の主要コンポーネントをいくつか見てみましょう。 ここではこれらのコンポーネントをリストし、パート II でそれぞれについて詳しく説明します。 「パート 2: Kubernetes の主要コンポーネントと概念の紹介」 K8s の主要コンポーネントの一部は次のとおりです。
次は何ですか?上記の各コンポーネントの概念を学習し、各概念の実装を理解するためにいくつかの小さな実践的な演習を行います。 そこで、次のアイデアを検討してください。 「複雑なシステムでも、それを小さなモジュールに分解する方法がわかれば簡単に理解できます。この単純化の技術こそが、複雑なマイクロサービス アーキテクチャの背後にある中核的な考え方なのです。」 |
<<: Oracle: GoldenGate をクラウドネイティブのフルマネージド サービスにする
>>: HDC.Cloud 2021: ファーウェイが業界の包括的なクラウド化とインテリジェントなアップグレードを加速する6つの革新的な製品をリリース
多くの企業が、普遍的なエラー訂正量子コンピュータの夢を一歩ずつ実現するために、大胆かつ興味深いステッ...
画像 SEO は、非テキスト コンテンツの最適化の一部です。一般的に、検索の約 15% ~ 20% ...
Budgetvm は、Hostcat の以前の投稿で、nlayer に移行すると言及していました。「...
XLVPS がプロモーション VPS をリリースしました。Host Cat はずっと前にこの VPS...
【Ebrun Power Networkニュース】Ebrun Power Networkは、今朝9時...
今年の6月は、昨年の6月からちょうど1年になります。 昨年6月、 Clouderaは2020年第1四...
OpenStack は、2010 年に NASA と Rackspace が OpenStack フ...
dwidc (Daiwang Data) は現在、湖北電信高防御 VPS、湖北電信高防御独立サーバー...
最近、あまり人気のないキーワードの新しいウェブサイトを制作しています。最初から組み入れ、Baidu ...
収益の96%を広告から得ているインターネット大手のGoogleは、モバイル時代において良い成績表を出...
製品とオペレーションのどちらがより重要ですか? これは、鶏が先か卵が先かを議論するのと同じように、そ...
Baiduウェブマスターツールの外部リンクツールで照会された外部リンクデータを分析するために、Pyt...
数日前、私はマーケティング エージェンシーは「仲介者」ではなく「コネクター」となり、ブランドがファン...
注意深いウェブマスターは、Baidu によって降格されるウェブサイトがますます増えていることに気付く...
[[427938]] [51CTO.com クイック翻訳]現在、多くの企業がクラウドネイティブ設計パ...