複雑なアプリケーションを高可用性、スケーラビリティ、移植性を備え、小さなモジュールで独立してデプロイできるようにするという切迫したニーズから、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つの革新的な製品をリリース
アジア太平洋地域の業界大手である Tomago Aluminium の IT 責任者である Denn...
wable.com の VPS はリリースされてからまだ 2 か月も経っていませんが、私の記憶が正し...
HostCat ブログは開設されて 3 年になります。ブログで私の QQ を見つけて、PayPal ...
[[431326]]トピックの紹介みなさんこんにちは、シャオロンです。以前、「Redis をマスター...
[要約] 秘密権使用者の特徴は、若く、教養が高く、活力があり、新しいものを好むことです。彼らは家にこ...
クラウドコンピューティングは、私たちの日常生活や仕事、勉強に直接的な影響を感じることはないかもしれま...
業界に入るときの疑問業界に初めて参入する場合、キーワード密度、外部リンクなど、SEO に関する非常に...
Vexxhost (2006 年に設立されたカナダの企業) は、OpenStack を使用してクラウ...
調査によると、パブリッククラウドの導入はコロナウイルスの発生前からすでに増加していた。パンデミックは...
私は chicagovps.net から 2G メモリの VZ を購入しました。これには 4 コアの...
2009 年に設立された 2host は、現在 3,700 を超える顧客にホスティング サービスを提...
私の友人の多くは北京、上海、広州で働いた後、地元に戻って求人サイトや地域ポータルを立ち上げています。...
複雑なアプリケーションを高可用性、スケーラビリティ、移植性を備え、小さなモジュールで独立してデプロイ...
加速クラウド(中華人民共和国付加価値通信事業許可証 B1-5344)は、四川省徳陽電信のコンピュータ...
8月31日、Huawei Cloud TechWave Big Data Special Dayにお...