猫でもわかる KubeEdge #InfraStudy / Infra Study Meetup 7th

332f89cc697355902a817506b6995f2b?s=47 y_taka_23
October 23, 2020

猫でもわかる KubeEdge #InfraStudy / Infra Study Meetup 7th

Infra Study Meetup #7 で使用したスライドです。

Kubernetes はその高い拡張性を背景として、コンテナオーケストレータのデファクトスタンダートの地位を獲得しました。しかし、Kubernetes の Node をそのままエッジデバイスの管理に延伸しようとすると、ネットワークの不安定性が課題になります。

このようなエッジに特有の課題を解決するため、CNCF の IoT Edge Working Group 主導で開発が進められている OSS として KubeEdge があります。本発表では、KubeEdge のアーキテクチャ上の特徴や従来の Kubernetes とのコントロールフローの違いについて解説します。

イベント概要:https://forkwell.connpass.com/event/190074/
録画:https://www.youtube.com/watch?v=iw_bSiv2Vl0

332f89cc697355902a817506b6995f2b?s=128

y_taka_23

October 23, 2020
Tweet

Transcript

  1. #InfraStudy 猫でもわかる KubeEdge チェシャ猫 (@y_taka_23) Infra Study Meetup #7 (23rd

    Oct. 2020)
  2. #InfraStudy おうち EKS 爆誕!? ※ EKS としてはイレギュラーな構成なので自己責任で

  3. #InfraStudy Kubernetes 大人気の理由 • 分散システムとしての優れた拡張性 ◦ API Server (etcd) のみが状態を保持

    ◦ 他コンポーネントは API Server を Watch ◦ 同じ枠組みでカスタムコントローラが追加可能 • The Platform of Platforms ◦ 今や様々な CloudNative 的な運用の基盤に Custom Controller
  4. #InfraStudy この拡張性をエッジにも延伸したい

  5. #InfraStudy サンプルアプリ:カウンタ • 管理コンソールからデバイスを操作・参照 ◦ 管理コンソールコンテナ:クラウドにデプロイ ◦ カウンタコンテナ:エッジにデプロイ(デバイスの代用)

  6. #InfraStudy Kubernetes によるナイーブな構成

  7. #InfraStudy Headless Service HTTP PUT/GET

  8. #InfraStudy K8s をエッジに適用する際の問題 • エッジデバイスは非力で不安定 ◦ 情報の同期がいつ行われるのかコントロールしづらい ◦ 瞬停したりするとエッジ側のイベント情報が失われる •

    通常の Pod-Service-Pod の通信が困難 ◦ エッジがネットワーク接続を持つ瞬間しか成功しない ◦ 相手エッジがいつネットワークに復帰するかわからない
  9. #InfraStudy https://github.com/kubeedge/kubeedge

  10. #InfraStudy KubeEdge の特徴 • CNCF Incubating Project ◦ IoT Edge

    ワーキンググループ (WG) が担当 ◦ Huawei の Intelligent Edge Fabric (IEF) が出自 • 通常の Kubernetes Node とは仕組みがかなり異なる ◦ Kubelet 相当の EdgeD を中心に複数の追加機能 ◦ K3s は同じくエッジ用だが通常の Kubernetes に近い
  11. #InfraStudy Edge Controller Device Controller Cloud Hub Edge Hub Meta

    Controller Device Twin EdgeD Event Bus CRI (Docker / containerd / CRI-O)
  12. #InfraStudy Edge Node は Master と直接接続しない

  13. #InfraStudy Cloud Core Edge Core Cloud Side Edge Side

  14. #InfraStudy WebSocket / QUIC Cloud Hub Edge Hub

  15. #InfraStudy Pod 作成の仕組み

  16. #InfraStudy Edge Controller Cloud Hub Edge Hub pod.yaml watch

  17. #InfraStudy Edge Hub Meta Controller 永続化

  18. #InfraStudy Meta Controller CRI (Docker / containerd / CRI-O) EdgeD

    Pod 起動
  19. #InfraStudy クラウド・エッジ間通信の仕組み

  20. #InfraStudy Device と DeviceModel • エッジデバイスを CustomResource で抽象化 ◦ Device:個々のデバイスに対応

    ◦ DeviceModel:送受信するメッセージなどのテンプレート • Pod-Pod を介さずにデバイスとやりとり ◦ クラウド側では Device の status.twins を読み書きする ◦ エッジ側では MQTT で Pub / Sub される
  21. #InfraStudy Device の Manifest apiVersion: device.kubeedge.io/v1alpha2 kind: Device metadata: name:

    counter spec: deviceModelRef: name: counter-model status: twins: - propertyName: status desired: metadata: type: string value: "OFF"
  22. #InfraStudy Device の Manifest apiVersion: device.kubeedge.io/v1alpha2 kind: Device metadata: name:

    counter spec: deviceModelRef: name: counter-model status: twins: - propertyName: status desired: metadata: type: string value: "OFF" 通信するデータ
  23. #InfraStudy Device Controller status: ON Cloud Hub Edge Hub watch

    PATCH
  24. #InfraStudy Edge Hub Device Twin 永続化

  25. #InfraStudy Device Twin Event Bus MQTT Pub / Sub

  26. #InfraStudy まとめ • Kubernetes をエッジに拡張する試み ◦ Node が切り離された状態でも動ける必要性 • 回線断に強い

    KubeEdge のアーキテクチャ ◦ Controller を通して接続、Node 内にも DB で永続化 • 対デバイス通信の Kubernetes Native な扱い ◦ Device / DeviceModel による MQTT 通信の抽象化
  27. #InfraStudy Let’s Go Over the Cutting Edge! Presented by チェシャ猫

    (@y_taka_23)