Kubernetes は、大規模な分散コンテナ化されたソフトウェア アプリケーションを管理するオープン ソースのコンテナ オーケストレーション プラットフォームです。 これは、クラウド コンピューティングの開発と進化におけるまったく革命的な進歩です。 Kubernetes は、Borg の独自のコントローラと Omega の柔軟なスケジューラを組み合わせた、Google の第 3 世代コンテナ管理システムです。 Kubernetes 内のアプリケーションは、環境から完全に分離されたコンテナ イメージにパッケージ化され、アプリケーションを自動的に構成し、リソース割り当ての追跡を維持します。 Kubernetesは以下に基づいています アプリケーション中心 技術的なアーキテクチャとアイデア 下 インフラストラクチャの違いを遮断し、基盤となる基本リソースの統一されたスケジュールとオーケストレーションを実現します。 上 コンテナ イメージを通じてアプリケーションを標準化し、アプリケーション ロードの自動展開を実現します。 真ん中 Kubernetes の共通オーケストレーション機能、オープン API、カスタム CRD 拡張機能を通じて、クラウドネイティブのオペレーティング システム機能を構築し、新しいクラウド コンピューティング インターフェイスを形成します。 R&Dチームを支援する 標準化され、弾力性があり、信頼性が高く、疎結合で、管理と保守が容易なアプリケーション システムを迅速に構築し、配信効率を向上させ、運用と保守の複雑さを軽減します。 Kubernetes には、技術アーキテクチャの観点から 3 つの機能があります。
1. Kubernetes の全体的なアーキテクチャKubernetesは典型的な マスタースレーブ分散アーキテクチャ、 による 集中管理ノード(マスターノード)、分散ワーカーノード(ワーカーノード) 同様に 補助ツール 構成。 1. 集中管理ノードクラスターのスケジュールと管理を行う集中管理ノード。 4 つのコアコンポーネント:
2. 分散作業ノードビジネス アプリケーション コンテナーを実行する分散ワーカー ノード。デフォルトでは、 3つのコアコンポーネント :
3. 補助ツール主にクラスタ管理とネットワーク拡張を支援する補助ツール:
2. Kubernetes のコアコンセプト1. Kubernetesの最小スケジューリング単位であるPODコンテナグループポッドはKubernetes 最小のスケジュールおよびリソース割り当て単位。 ポッドは互いに分離されています。通常、Pod 内では 1 つのコンテナのみを実行することをお勧めします。いくつかのコンテナが密接に結合されている場合、複数のコンテナを同じ Pod で実行して、スケジュールと管理を簡単に行うことができます。 Pod は実行中のアプリケーションのインスタンスです。アプリケーションは、複数の Pod を同時に実行することによって実装されます。 水平スケーリング 能力。ポッド自体には自己回復機能はありません。スケジュールまたは操作が失敗した場合、管理ノードのコントローラーは、Pod の再起動、再構築、移行などの操作を実行するために構成をトリガーする必要があります。 ポッドの起動プロセスから、 ポッドコンテナは主に コンテナの一時停止、コンテナの初期化 同様に アプリコンテナ 3 種類のコンテナ:
PODリソース分離の観点から、 Pod コンテナは主に、Linux が提供する Namespace および Cgroup 機能によって実装されます。名前空間はプロセスの分離を実装し、Cgroup はプロセス リソースの制御を実装します。名前空間は、ipc、uts、net、mnt、pid などのさまざまなリソース空間で構成されます。 クリ Kubernetes v1.5 で導入され、Kubelet をコンテナ ランタイムから分離します。 CRIは定義する 容器 そして 鏡 コンテナランタイムのサービスインターフェースはイメージライフサイクルから分離されているため、 ランタイムサービス そして イメージサービス 2 つのサービスがあり、そのうち RuntimeService には主に Sandbox と Container の管理 gRPC インターフェースが含まれます。サンドボックスについては、上記の Pod 起動プロセスで説明されています。 一時停止コンテナ 。現在、CRI をサポートするバックエンドには、cri-o、cri-containerd、rkt、frakti、docker などがあります。cri-o は、Red Hat が開始したオープンソースのコンテナ ランタイムであり、コミュニティによって推進されています。 軽量で、Kubernetes 向けに特別に設計されています。 主な目的は、Kubernetes クラスターのコンテナ ランタイムとして Docker を置き換えることです。 2. ボリュームストレージ、Kubernetes の複雑なストレージアーキテクチャストレージは非常に重要であり、エコシステムとテクノロジーの両方が比較的複雑な分野でもあります。 Linux と Windows のエコシステムだけでも 20 を超えるファイル システムをサポートしています。 Kubernetes ストレージ アーキテクチャの設計は継続的に進化し、改善されてきました。できるだけ多くのストレージ プラットフォームとの互換性を確保するために、Kubernetes はデフォルトでツリー内プラグインの形式でさまざまな種類のストレージ システムに接続します。 また、FlexVolume および CSI プラグイン、およびツリー外プラグインに基づくカスタム ストレージ サービスもサポートします。 Kubernetesストレージの場合、主に 基本的なアプリケーション構成ファイルの読み取りと暗号化キーの管理。アプリケーションストレージの状態、データアクセス、異なるアプリケーション間のデータ共有 その他、主な使用シナリオは 3 つあります。現在 Kubernetes でサポートされているボリューム プラグインは次のとおりです。 空のディレクトリ: ライフサイクルはポッドのライフサイクルと一致します。 Pod が削除されると、emptyDir 内のデータは自動的にクリアされます。現在 emptyDir でサポートされるタイプには、メモリ、ラージ ページ メモリ、およびノード上で Pod が配置されているファイル システムが含まれます。
導入 PV、PVC、ストレージクラス その後、リソースの管理と制御はより柔軟になり、チームの責任はより明確になり、R&D担当者は基盤となるストレージの詳細に注意を払うことなく、ストレージ要件(IO、容量、アクセスモードなど)のみを考慮すれば済みます。複雑な基礎の詳細は、専門のクラスタ管理およびストレージ管理者によって完了されます。 CSI これは、コンテナにストレージ サービスを提供する一連の標準ストレージ管理インターフェイスを確立するために、Kubernetes バージョン 1.9 で導入されました。これにより、Kubernetes プラットフォームとストレージ サービス ドライバーを完全に分離できるようになります。 CSIには主に CSI コントローラ サーバー そして CSI ノード サーバー 2つの部分、 コントローラーサーバー 主に作成、削除、マウント、アンマウントなどの制御機能を実現します。 ノードサーバー 主に Node ノードのマウントおよびアンマウント操作を実装します。 CSIコントローラサーバーと外部CSIサイドカーは Unixソケット 通信するために、CSIノードサーバーとKubeletは以下を介して通信します。 Unixソケット コミュニケーションをとるため。 CSI 実装クラスもますます充実してきています。たとえば、ExpandCSIVolumes はファイル システムの拡張を実現できます。 VolumeSnapshotDataSource はデータ ボリュームのスナップショットを実現できます。 VolumePVCDataSource はカスタム PVC データ ソースを実装します。 CSIInlineVolume は、Volume 内のいくつかの CSI ドライバーを定義します。 Alibaba Cloudもオープンソース アリババクラウドディスク、NAS、CPFS、OSS、LVM など CSI ストレージ プラグイン。 3. IngressとService、繁栄するKubernetesネットワークKubernetes コンテナ ネットワークは非常に複雑で、Pod ネットワーク、サービス ネットワーク、クラスター IP、NodePort、LoadBalancer、Ingress など、多くの概念が関係します。このため、Kubernetes ネットワーク参照 TCP/IP プロトコル スタックは 4 つのレイヤーに抽象化されています。 レイヤー0: ノード ネットワークは比較的単純です。これは、Kubernetes ノード (物理マシンまたは仮想マシン) 間の通常の IP アドレス指定と相互通信を保証するネットワークです。これは通常、基盤となる (パブリック クラウドまたはデータ センター) ネットワーク インフラストラクチャによってサポートされます。 レイヤー1: Pod は Kubernetes の最小のスケジューリング単位です。 Pod ネットワークは、Kubernetes クラスター内のすべての Pod (同じノード上の Pod と異なるノード上の Pod を含む) が論理的に同じフラット ネットワークにあり、相互に IP アドレスを割り当てて通信できることを保証します。これはコンテナ ネットワークの最も複雑な部分です。さまざまなコンテナ ネットワーク プラグインを通じてさまざまなネットワーク要件を満たし、CNI 標準化を通じてネットワークのカスタマイズ機能を実現します。 レイヤー3: 各 Pod には IP がありますが、同一 Pod のグループに対する統一された安定したアクセス アドレスの問題を解決し、バックエンド Pod アプリケーション サービスにリクエストを均等に分散するために、Pod のライフサイクルと一致しています。 Kubernetes は、サービス検出および負荷分散機能を実装するためにサービス ネットワークを導入します。基礎レイヤーは、Kube-Proxy+iptables 転送を通じて実装されます。これは、アプリケーションに非侵入的で、プロキシを貫通せず、追加のパフォーマンス損失もありません。 レイヤー4: Kubernetes サービス ネットワークはクラスターの内部ネットワークであり、クラスターの外部からはアクセスできません。内部サービスにアクセスするには、外部に公開する必要があります。 Kubernetes は、NodePort、LoadBalancer、Ingress を通じて外部ネットワーク アクセス機能を構築します。 インド国立情報学研究所 コンテナ ネットワーク仕様は CoreOS によって最初に開始され、Kubernetes ネットワーク プラグインの基礎となっています。コンテナを作成する際、Container Runtime は最初にネットワーク名前空間を作成し、次に CNI プラグインを呼び出してネットワーク名前空間のネットワークを構成し、最後にコンテナ内でプロセスを開始します。 CNI プラグインは、CNI プラグインと IPAM プラグインの 2 つの部分で構成されています。
コンテナネットワーク技術も進化と発展を続けています。コミュニティには、Flannel、Calico、Cilium、OVN など、多くのオープンソース ネットワーク コンポーネントが存在します。各コンポーネントには独自の利点と適用可能なシナリオがあり、統一されたコンポーネントとソリューションを形成することは困難です。 4. ワークロード、Kubernetes アプリケーション中心のコンセプトクベネフィット 作業負荷 アプリケーションの管理、展開、リリースを実現し、Kubernetes のアプリケーション中心のコンセプトを実践します。 Kubernetes は、さまざまなシナリオのニーズを満たすために、Deployment、StatefulSet、ReplicaSet、Job、CronJob、DaemonSet など、複数のタイプのワークロードをサポートしています。
Kubernetes エコシステムには、追加の操作を提供するサードパーティのワークロードがいくつかあります。また、CRD を使用してワークロードをカスタマイズしたり、デバイス プラグインによって駆動されるハードウェア ワークロードをカスタマイズしたりすることもできます。 5. コントローラー、Kubernetes集中制御管理センターコントローラーマネージャー Kubernetes の集中制御および管理センターとして、クラスターのノード、Pod レプリカ、サービス エンドポイント、名前空間、サービス アカウント、およびリソース クォータのリソース管理を担当します。また、API サーバー インターフェースを通じて、クラスター内の各リソース オブジェクトの状態をリアルタイムで監視します。障害が発生してシステムの状態が変化すると、システムは直ちにそれを「予想される状態」に修復しようとします。
さらにKubernetes v1.6では、 クラウド コントローラー マネージャー (CCM) Alibaba パブリック クラウド基本製品との接続をサポートします。 結論要約すると、Kubernetes は強力なコンテナ オーケストレーション システムであるだけでなく、ツールとサービスの巨大なエコシステムも促進します。 クラウドネイティブ時代のオペレーティング システムは、クラウド コンピューティングの新しいインターフェイスを形成します。 デザインコンセプトの観点から、 Kubernetesは以下に基づいています アプリケーション中心 建設の概念、 下 インフラストラクチャの違いを遮断し、基盤となる基本リソースの統一されたスケジュールとオーケストレーションを実現します。 上 コンテナ イメージを通じてアプリケーションを標準化し、アプリケーション ロードの自動展開を実現します。 真ん中 Kubernetes の共通オーケストレーション機能、オープン API、カスタム CRD 拡張機能を通じて; 技術アーキテクチャの観点から、 Kubernetes は、マスター制御ノードと水平にスケーラブルなワーカーノードで構成される、典型的な分散マスタースレーブ アーキテクチャです。マスターは集中制御と管理を実装し、ワーカーは分散操作を実装します。これは、Openstack アーキテクチャや SpringCloud をベースに開発されたマイクロサービス ビジネス アプリケーションとほとんど変わりません。 デザインモードの観点からは、 Kubernetes は多数のモデル (プリミティブ、リソース オブジェクト、構成、一般的に使用される CRD) を定義し、構成管理モデルを通じてクラスター リソース制御を実装します。モデルは複雑ですが、レイヤー(コア層、分離およびサービス アクセス層、スケジューリング層、リソース層)ごとに段階的に理解することができます。 プラットフォームの拡大に関しては、 Kubernetes は、API、オープン スタンダード (CNI、CSI、CRI など)、CRD が開発されたオープンで拡張可能なプラットフォームです。単なるランタイムプラットフォームではなく、運用・保守のための開発プラットフォームでもあります。 |
<<: QingCloudストレージが全面的にアップグレードされ、自社開発のQingStor U10000がさらなるデータ容量を解放
>>: オープンソースはイノベーションの可能性を刺激し、RHEL 9 は「イノベーション センター」を定義します
一昨日、A5タスクエリアでタスクを見ました。ウェブサイトのインクルードが常に10未満で、何をしても無...
百度のスナップショットが5月13日に更新されて以来、大多数のウェブサイトのスナップショットは13日の...
「SEO」中毒事件1 Lu Songsongの記事を読んで、履歴書を提出していると、履歴書を書いてい...
9月10日、マイクロソフトの公式ブログでAzure DevOpsサービスの開始が発表されました。 A...
[[430108]]この記事はWeChatの公開アカウント「Shucang Baobaoku」から転...
tmhhostはどうですか? tmhhost Los Angeles cn2 giaはどうですか? ...
1. サーバーは安定して稼働する必要がある2. 適切なドメイン名を選択し、ウェブサイトのパスとファイ...
ユーザー エクスペリエンスは現在、インターネット上でホットな話題となっていますが、これは主にソーシャ...
buyvmには4つのデータセンターがあります。多くの人が苦情に耐えるためにルクセンブルクを選びます。...
shockvps は最近、HostCat の独占割引コードを開設しました。最初であるという原則に沿っ...
医療業界の多くのウェブマスターは、2012 年が私たちにとって最も困難な年であったことに気付くと思い...
ITM Services LLC / DBA、vpsRus は 2000 年に設立され、米国フロリダ...
世界最高の DDoS 防御 + サーバー プロバイダーである OVH は、今年のブラック フライデー...
Google は最近、ウェブマスター ツールに新しい機能を追加しました。この機能により、ウェブマスタ...
自動車業界のウェブサイトのキーワード最適化ソリューションについてですが、自動車業界のキーワードランキ...