この記事は、Double_Dong&Huazi が執筆した WeChat パブリック アカウント「運用と保守の開発ストーリー」から転載したものです。この記事を転載する場合は、Operation and Maintenance Development Story のパブリック アカウントにお問い合わせください。 1. 背景エッジ コンピューティング プラットフォームは、データ ソースに近いエッジのコンピューティング ユニットを中央クラウドに統合し、集中管理を実現し、その上にクラウド サービスを展開し、端末の要求にタイムリーに応答することを目的としています。しかし、銀行支店、車載ノード、ガソリンスタンドなど、数千のエッジノードが全国に散在しています。一部のエッジデバイス管理シナリオに基づくと、サーバーはさまざまな都市に散在しており、均一に管理することはできません。クラスターの展開と統合管理を最適化するために、エッジ コンピューティング シナリオ ソリューションを検討します。 2. エッジコンピューティングの課題Kubernetes システムのエッジ コンピューティング フレームワークでは、次の問題を解決する必要があります。
3. ソリューションの選択
3.1.キューブエッジ3.1.1 アーキテクチャの概要 KubeEdge は、クラウド エッジ コラボレーション機能を提供する Kubernetes 拡張機能に基づく初のオープン インテリジェント エッジ プラットフォームです。これは、インテリジェント エッジ分野における CNCF の最初の公式プロジェクトでもあります。 KubeEdge が解決することを目指す主な問題は次のとおりです。
KubeEdge のアーキテクチャは次のとおりです。 KubeEdge アーキテクチャは、クラウド レイヤー、エッジ レイヤー、デバイス レイヤーの 3 つのレイヤーに明確に分かれています。 雲 KubeEdge クラウド プロセスは、次の 2 つのコンポーネントで構成されます。
Kubernetes マスターはクラウドで実行されます。ユーザーは、kubectl コマンドラインを通じてクラウド内のエッジノード、デバイス、アプリケーションを直接管理できます。使用方法は Kubernetes ネイティブとまったく同じなので、適応する必要はありません。 角 KubeEdge のエッジ プロセスは、次の 5 つのコンポーネントで構成されます。
ネットワーク KubeEdge エッジ クラウド ネットワーク アクセスは EdgeMesh に依存します。 クラウドは標準の Kubernetes クラスターであり、Flannel や Calico などの任意の CNI ネットワーク プラグインを使用できます。 Kubelet や KubeProxy などの Kubernetes ネイティブ コンポーネントをデプロイできます。同時に、KubeEdge クラウド コンポーネント CloudCore がクラウド上にデプロイされ、KubeEdge エッジ コンポーネント EdgeCore がエッジ ノード上で実行され、エッジ ノードのクラウド クラスターへの登録が完了します。 EdgeMesh は、各ノード上の EdgeMesh-Server と EdgeMesh-Agent の 2 つのコンポーネントで構成されます。 EdgeMesh-Serverの動作原理:
EdgeMesh-Agentの動作原理:
3.1.2 実践 公式ドキュメント「Keadm を使用したデプロイ | KubeEdge」に従ったデプロイテスト
実用的な結論: 公式ドキュメントのデプロイメントによれば、エッジノードは正常にクラスターに参加でき、サービスは正常にエッジノードにデプロイでき、エッジメッシュはサービスアクセスをテストするためにデプロイされます。エッジは SVC を介してクラウド サービスにアクセスできますが、クラウドは SVC を介してエッジにアクセスできず、エッジ ノード サービスには SVC を介してアクセスできません。 3.2.スーパーエッジ3.2.1 アーキテクチャの概要 SuperEdge は、Tencent が立ち上げた Kubernetes ネイティブのエッジ コンピューティング管理フレームワークです。 SuperEdge は、openyurt や kubeedge と比較して、Kubernetes のゼロ侵入機能やエッジ自律機能を備えているだけでなく、独自の分散ヘルスチェックやエッジ サービス アクセス制御などの高度な機能もサポートしており、不安定なクラウド エッジ ネットワークがサービスに与える影響を大幅に軽減します。 全体的なアーキテクチャ: コンポーネントの機能は次のようにまとめられます。 クラウドコンポーネント エッジ クラスターにデプロイされたネイティブ Kubernetes マスター コンポーネント (cloud-kube-APIServer、cloud-kube-controller、cloud-kube-scheduler) に加えて、クラウド内の主な制御コンポーネントには次のものが含まれます。
エッジコンポーネント ネイティブ Kubernetes ワーカー ノードにデプロイする必要がある kubelet と kube-proxy に加えて、次のエッジ コンピューティング コンポーネントもエッジに追加されます。
3.2.2 実践 公式ドキュメント「superedge/README_CN.md at main · superedge/superedge (github.com)」に従ってデプロイおよびテストします。
実用的な結論: 公式ドキュメントによると、エッジノードは正常にクラスターに参加できますが、サービスをエッジノードにデプロイすることはできません。この問題は提起されましたが、回答はなく、他のテストも実行されませんでした。 3.3.オペニュート3.3.1.アーキテクチャの概要 OpenYurt のアーキテクチャ設計は比較的シンプルで、Kubernetes を強化するために非侵襲的なアプローチを採用しています。クラウド (K8s マスター) に Yurt コントローラー マネージャー、Yurt アプリ マネージャー、およびトンネル サーバー コンポーネントを追加します。エッジ側 (K8s Worker) には、YurtHub および Tunnel Agent コンポーネントが追加されます。アーキテクチャの観点から、エッジ シナリオに適応するために次の機能が追加されました。
3.3.2 実践 私は公式ドキュメントに基づいてそのアーキテクチャを理解しただけで、展開テストは実施しませんでした。 3.4. K3s3.4.1 アーキテクチャの概要 K3S は CNCF によって公式に認定された Kubernetes ディストリビューションであり、オープンソース化されたのは KubeEdge より少し後です。 K3S は、リソースが限られた環境で Kubernetes を実行する開発者およびオペレーター向けに設計されています。これは、x86、ARM64、および ARMv7D アーキテクチャのエッジ ノード上で小規模な Kubernetes クラスターを実行するように設計されています。 K3S の全体的なアーキテクチャは次のとおりです。 実際、K3S は特定のバージョンの Kubernetes (例: 1.13) に基づいており、コードを直接変更します。 K3S はサーバーとエージェントに分かれています。サーバーは Kubernetes 管理プレーン コンポーネント + SQLite およびトンネル プロキシであり、エージェントは Kubernetes データ プレーン + トンネル プロキシです。 Kubernetes の実行に必要なリソースを削減するために、K3S はネイティブ Kubernetes コードに次の変更を加えました。
3.4.2 実践 公式ドキュメント: https://docs.rancher.cn/docs/k3s/installation/install-options/_index 運用保守アーキテクチャ図 ノード情報 k3s サーバー - 192.168.15.252 k3s エージェント - 192.168.15.251 注意: サーバーには、パスワードなしでエージェントにログインする権限が必要です。 全体的なアイデア K3S を使用して Kubernetes クラスターをデプロイし、クラスターの https 証明書を作成し、Helm を使用して Rancher をデプロイし、Rancher の UI インターフェイスを通じて Kubernetes クラスターを手動でインポートし、Kubernetes クラスターを使用します。 スクリプトを使用してDockerをインストールする
Kubernetes のデプロイメント Rancher の中国語ドキュメントでは、Kubernetes クラスターを構築するためのより軽量な方法である K3S が推奨されています。インストールプロセスは非常に簡単です。インターネットにアクセスし、対応するコマンドを実行するには、サーバーだけが必要です。 k3s サーバー ホストがコマンドを実行します。実行が完了すると、エージェント ノードのインストール用にマスター ホストの K3S_TOKEN が取得されます (デフォルト パス: /var/lib/rancher/k3s/server/node-token)。
k3s エージェント ホストはコマンドを実行し、K3S クラスターに参加します。
http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh は国内の高速化アドレスであり、正常に実行できます。 実行が完了したら、サーバー上で K3S クラスターが正常にインストールされているかどうかを確認します。 4. コントラストKubeEdge、SuperEdge、OpenYurt を含む上記の 4 つのオープン ソース ソリューションは、次のデプロイメント モデルに従います。 完全に分散化された展開モードです。管理プレーンはクラウドに展開されます。エッジ ノードは Kubernetes エージェントを実行するためにそれほど多くのリソースを必要とせず、クラウドとエッジはメッセージを通じて連携します。 Kubernetes の観点から見ると、エッジ ノード + クラウドは完全な Kubernetes クラスターです。この展開モデルは、「デバイス エッジ」と「インフラストラクチャ エッジ」の両方のシナリオの展開要件を満たすことができます。 まず、次の 3 つのソリューションを比較します。
予備的な結論: これら 3 つのソリューションを比較すると、KubeEdge と OpenYurt/SuperEdge のアーキテクチャ設計はまったく異なります。それに比べると、OpenYurt/SuperEdge のアーキテクチャ設計はよりエレガントです。 OpenYurt と SuperEdge は類似したアーキテクチャ設計を備えています。 SuperEdge は OpenYurt よりも後にオープンソース化されたため、成熟度がまだ低いです。ただし、業界で実装されている実稼働ソリューションによると、KubeEdge は使用率が高く、成熟度も高いことがわかります。同時に、OpenYurt/SuperEdge は比較的遅れてオープンソース化され、まだ CNCF インキュベーション プロジェクトに参加していません。同時に、実際のテスト結果と組み合わせて、KubeEdge を検討します。 次に、KubeEdge と K3s を比較してみましょう。 K3S の展開モデルは次のとおりです。 K3S はエッジで完全な Kubernetes クラスターを実行します。つまり、K3S は分散型デプロイメント モデルではありません。各エッジには追加の Kubernetes 管理プレーンを展開する必要があります。したがって、この展開モデルは、十分なリソースがある「インフラストラクチャ エッジ」シナリオにのみ適しており、リソースが少ない「デバイス エッジ」シナリオには適していません。同時に、クラスター間のネットワークを接続する必要があります。エッジ Kubernetes クラスターを管理するには、マルチクラスター管理コンポーネントを重ねる必要があります。 関連する比較は次のとおりです。
5. 全体的な結論KubeEdge の主な特徴は、クラウドとエッジのコラボレーションです。 KubeEdge は、Kubernetes 標準 API を通じて、クラウド内のエッジ ノード、デバイス、ワークロードの追加、削除、変更、クエリを管理します。エッジノードのシステムアップグレードやアプリケーションアップデートをクラウドから直接送信できるため、エッジの運用と保守の効率が向上します。ただし、クラウド エッジの共同アクセスには、サーバー側とエージェント側を含む EdgeMesh コンポーネントの使用が必要であり、転送のために DNS アクセス トラフィックがハイジャックされ、ネットワークの複雑さが増します。一方で、実際のテストでは、SVC 経由でエッジ サービスにアクセスできないことが判明しました。 K3s にはクラウドとエッジのコラボレーション機能は含まれていませんが、ガソリンスタンドのビジネス シナリオでは、ビジネスを中央エンドとエッジエンドに分割できます。中央側は複雑な処理を実行し、デコード タスクを送信しますが、エッジ側は生成されたイベントをデコードして分析し、表示する役割のみを担います。また、クラウドとエッジのコラボレーションをさらに別のレベルに引き上げることもできます。 KubeEdge クラウド エッジ共同アクセス ソリューションと比較すると、追加のコンポーネントを展開する必要がないため、ネットワークの複雑さが軽減され、問題のトラブルシューティングが容易になります。 KubeEdge のもう 1 つのハイライトは、エッジ ノードのオフライン自律性です。 KubeEdge は、メッセージ バスとメタデータ ローカル ストレージを通じてノードのオフライン自律性を実現します。ユーザーが期待するコントロール プレーンの構成とリアルタイムのデバイス ステータス更新は、メッセージを通じてローカル ストレージに同期されるため、ノードがオフラインで再起動された場合でも管理メタデータが失われず、ノード デバイスとアプリケーションの管理機能が維持されます。 K3s はエッジノードで完全なクラスターを構成しているため、時間的に中央ネットワークから切断されても、現在の業務の運用に影響はありません。 軽量の観点から見ると、k3s バイナリ ファイルのサイズは 50 MB、edgecore は 80 MB です。リソース消費: k3s はエッジの完全なクラスターであるため、リソース消費は KubeEdge よりも高くなります。ただし、ガソリンスタンドのシナリオでは、エッジ サーバーのメモリ構成がより高くなるため、これは許容範囲です。 運用と保守の観点から見ると、k3s の保守は、追加のコンポーネントを追加することなく、ネイティブ k8s と同様です。唯一の難点は、マルチクラスターの管理です。このためには、Rancher やその他のマルチクラスター管理ソリューションを検討してください。同時に、golive2.0 は、1 つのデプロイメントを複数のクラスターに同時に展開することもサポートします。 KubeEdge が複数のガソリンスタンドに接続する場合、名前空間の分離が必要であり、デプロイメントには汚染と許容度の追加が含まれます。同時に、1 つのデプロイメント パッケージで複数の名前空間のデプロイメントをサポートする必要があります。さらに、クラウドエッジ アクセスの場合、KubeEdge はトラフィックを転送するために EdgeMesh コンポーネントを追加します。これにより、ネットワークの複雑さが増し、問題が発生した場合のトラブルシューティングが困難になります。 したがって、総合的な比較に基づいて、k3s を使用することをお勧めします。 |
<<: Longhorn クラウド ネイティブ コンテナ分散ストレージ - トラブルシューティング ガイド
>>: 自己を見つめる質問:繰り返し消費、注文消費、分散取引
クラウド コンピューティングは、テクノロジーの世界に変革をもたらし、急速に成長し続けています。 20...
現在、多くの企業がオンラインプロモーションにおいて共通の問題に直面しています。つまり、有料のオンライ...
この記事を書く前に、A Guang SEO Blog はウェブサイトのテーマから外れた記事をいくつか...
数日前、ウェブマスターのウェブサイトを閲覧していたところ、1日に6000元を稼いだと堂々と自慢してい...
これはアプリケーションです。それ自体は完全な機能単位ですが、それだけでは存続できません。適切に構成さ...
[51CTO.comからのオリジナル記事] Tuya Smartは消費者市場ではあまり見かけないので...
【はじめに】 これまでも固定電話においては実名登録が実施されてきましたが、無線インターネット接続カー...
2017 年に企業がプライベート クラウド インフラストラクチャの構築をやめ、ハイブリッド IT イ...
最近では、インターネット企業が数百億、あるいは数千億の価値があると評されるニュースをよく目にし、イン...
オンラインで多くの時間を費やした後、私たちは共通の現象を発見しました。それは、ほとんどの商品のオンラ...
多くの企業は、ディレクトリよりも見た目が美しく、かっこいいため、第 2 レベルのドメイン名を使用する...
Bandwagonhost は vpsblast の別名であり、アリゾナにデータセンターがあります。...
WebSound の格安 VPS プロモーションが始まりました。RuiSu、FinalSpeed、N...
プログラマーに関して言えば、残業と高給は、ソフトウェア開発者に常に連想される 2 つのイメージです。...
2018 年 8 月 17 日、Microsoft Accelerator Beijing は、Mi...