Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
9
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

KubeEdgeとはなにか

はじめに

仕事の一環でKubeEdgeを試す機会があったので、公式ドキュメントを読み解いてみます。

KubeEdgeとは

KubeEdgeCNCFのサンドボックスプロジェクトとして開発が進められている、コンテナオーケストレーションをエッジに拡張するためのOSSです。
KubeEdgeはK8s上に構築され、エッジにネットワークやアプリケーションのデプロイ、エッジとマスター(公式サイトではクラウドを前提としていました)のメタデータ同期を提供してくれるようです。また、オフラインモードやMQTTを用いたエッジに接続したデバイスとの連携もサポートするようです。
要するにクラウドとエッジでKubernetesクラスターを組んだ際に起きる、NW不安定問題や、外部デバイスとの連携をうまーくラッピングしてくれるのがKubeEdgeと考えていいでしょう。
類似のプロダクトでK3sがありますが、K3sはK8sを最大限軽量化しており、K8sとクラスタを組むことはできませんが、KubeEdgeならK8sとクラスタを組むことができるので、クラウドと同じクラスタにエッジを所属させる、みたいな使い方ができそうですね。
クラウドにコントロールプレーンを持って、エッジのアプリケーションを管理する、みたいなことはKubeEdgeでもK3sでもできるはずです。

KubeEdgeのコンポーネント

公式ドキュメントからの転載になりますが、以下のコンポーネント構成となるようです。
気になるところは、Amazon EKSやGoogle GKEなどマネージドのコントロールプレーンが使えるかですね。
ドキュメントの表記だけではいまいちわかりませんでした。。

  • Edged: エッジノードのエージェントで、コンテナ化されたアプリケーションを管理する
  • EdgeHub: クラウドサービスとインターフェースするためのWebソケットクライアント(EdgeControllerと同義)。クラウド側のリソース更新をエッジに同期したり、エッジホストのステータスをクラウドにレポートしたりする。
  • CloudHub: クラウドサイドの変更点をキャッシュしEdgeHubに送信するためのWebソケットサーバ。
  • EdgeController: エッジホストとPodメタデータを管理する拡張Kubernetesコントローラ。
  • EventBus: MQTTサーバ(mosquitto)とインターフェースするMQTTクライアント。他のコンポーネントにパブリッシュとサブスクライブの機能を提供する。
  • DeviceTwin: デバイスのステータスを保存したり、デバイスステータスをクラウドに同期する機能を提供する。また、アプリケーション向けにクエリインターフェースも提供する。
  • MetaManager: EdgedとEdgeHubの間のメッセージプロセッサ。軽量DB(SQLite)との間でメタデータの保存・取得する機能も有する。 image.png

KubeEdgeの動作要件

KubeEdgeのリポジトリをみると、KubeEdgeとK8s、Golangのバージョン要件は以下の通りのようです。
また、Setup from KubeEdge Installerを確認するとイントールに用いるKubeEdge installerのサポートOSは現状Ubuntuのみのようです。CentOSやRasPiはまだ対応中の模様。

KubeEdge MasterとWorkerのインストール要件は以下。

Cloud side (KubeEdge Master)

  • golang (If you want to compile KubeEdge)
  • Docker, or other runtime, such as containerd
  • kubeadm/ kubectl
  • Kubernetes cluster with kubeadm

Edge side (KubeEdge Worker Node)

  • golang (If you want to compile KubeEdge)
  • Docker, or other runtime, such as containerd
  • mosquitto : If you are just trying KubeEdge, this step can be skipped.

image.png
転載元:Github

image.png
転載元:Start Developing KubeEdge

まとめ

KubeEdgeの概要、コンポーネント、動作要件を調査しました。
次回はAmazon EKS上にKubeEdgeが構築できるのか試してみたいと思います。

次回
EKSでKubeEdgeを構築したら失敗した
KubeEdgeを構築する(再)を書きました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
9
Help us understand the problem. What are the problem?