Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

y_taka_23

October 23, 2020
Tweet

More Decks by y_taka_23

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

  3. #InfraStudy
    Kubernetes 大人気の理由
    ● 分散システムとしての優れた拡張性
    ○ API Server (etcd) のみが状態を保持
    ○ 他コンポーネントは API Server を Watch
    ○ 同じ枠組みでカスタムコントローラが追加可能
    ● The Platform of Platforms
    ○ 今や様々な CloudNative 的な運用の基盤に
    Custom
    Controller

    View Slide

  4. #InfraStudy
    この拡張性をエッジにも延伸したい

    View Slide

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

    View Slide

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

    View Slide

  7. #InfraStudy
    Headless
    Service
    HTTP PUT/GET

    View Slide

  8. #InfraStudy
    K8s をエッジに適用する際の問題
    ● エッジデバイスは非力で不安定
    ○ 情報の同期がいつ行われるのかコントロールしづらい
    ○ 瞬停したりするとエッジ側のイベント情報が失われる
    ● 通常の Pod-Service-Pod の通信が困難
    ○ エッジがネットワーク接続を持つ瞬間しか成功しない
    ○ 相手エッジがいつネットワークに復帰するかわからない

    View Slide

  9. #InfraStudy
    https://github.com/kubeedge/kubeedge

    View Slide

  10. #InfraStudy
    KubeEdge の特徴
    ● CNCF Incubating Project
    ○ IoT Edge ワーキンググループ (WG) が担当
    ○ Huawei の Intelligent Edge Fabric (IEF) が出自
    ● 通常の Kubernetes Node とは仕組みがかなり異なる
    ○ Kubelet 相当の EdgeD を中心に複数の追加機能
    ○ K3s は同じくエッジ用だが通常の Kubernetes に近い

    View Slide

  11. #InfraStudy
    Edge Controller Device Controller Cloud Hub
    Edge Hub
    Meta Controller Device Twin
    EdgeD Event Bus
    CRI (Docker / containerd / CRI-O)

    View Slide

  12. #InfraStudy
    Edge Node は Master と直接接続しない

    View Slide

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

    View Slide

  14. #InfraStudy
    WebSocket / QUIC
    Cloud Hub
    Edge Hub

    View Slide

  15. #InfraStudy
    Pod 作成の仕組み

    View Slide

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

    View Slide

  17. #InfraStudy
    Edge Hub
    Meta Controller
    永続化

    View Slide

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

    View Slide

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

    View Slide

  20. #InfraStudy
    Device と DeviceModel
    ● エッジデバイスを CustomResource で抽象化
    ○ Device:個々のデバイスに対応
    ○ DeviceModel:送受信するメッセージなどのテンプレート
    ● Pod-Pod を介さずにデバイスとやりとり
    ○ クラウド側では Device の status.twins を読み書きする
    ○ エッジ側では MQTT で Pub / Sub される

    View Slide

  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"

    View Slide

  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"
    通信するデータ

    View Slide

  23. #InfraStudy
    Device Controller
    status: ON
    Cloud Hub
    Edge Hub
    watch
    PATCH

    View Slide

  24. #InfraStudy
    Edge Hub
    Device Twin
    永続化

    View Slide

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

    View Slide

  26. #InfraStudy
    まとめ
    ● Kubernetes をエッジに拡張する試み
    ○ Node が切り離された状態でも動ける必要性
    ● 回線断に強い KubeEdge のアーキテクチャ
    ○ Controller を通して接続、Node 内にも DB で永続化
    ● 対デバイス通信の Kubernetes Native な扱い
    ○ Device / DeviceModel による MQTT 通信の抽象化

    View Slide

  27. #InfraStudy
    Let’s Go Over the Cutting Edge!
    Presented by チェシャ猫 (@y_taka_23)

    View Slide