物づくりが好きな自宅警備員がK3s+Jetsonで自宅監視カメラを開発した話です。
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 1© Copyright 2020 Rancher Labs. All Rights Reserved. 1K3sを活⽤したCloud Native時代のIoTアプリ物づくりが好きな⾃宅警備員8th Sept 2020Wenhan ShiSupport Engineer
View Slide
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 2⾃⼰紹介• 施⽂翰 (シ ブンカン) Wenhan Shi• @shi_wenhan• 経歴• ⽇⽴製作所 - Linux カーネルモジュールの開発・保守サポート• Red Hat K.K. - GlusterFS/OpenShift サポート• Canonical Japan K.K. - Ubuntu/OpenStack/Kubernetes サポート• Rancher Lab Inc, - Rancherファミリー/Kubernetesサポート兼 ⾃宅警備員
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 3• 家まわりの監視が必要• 監視カメラが複数台• 各デバイスの⼀括管理• APPデプロイが簡単• IP Addressで監視可能• ⾃動回復• 動体検知• 動画保存• 家庭菜園のイチゴ盗難事件• 昼寝中宅急便ピンポン事件• ⽣ゴミ散らかされ事件背景と開発要件
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 4役者は、揃った
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 5https://www.nvidia.com/en-us/autonomous-machines/jetson-store/Jetson Nanoとは
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 64. Run GPU enabled pod5. Get GPU info from pod log1. Download Nvidia Jetpack SDK >= v4.2.12. Set the Nvidia runtime as a defaultruntime in Docker3. Deploy k3s with Docker engineAccess Jetson GPU in Kubernetes{“default-runtime”: “nvidia”,“runtimes”: {“nvidia”: {“path”: “nvidia-container-runtime”,“runtimeArgs”: []}}}curl -sfL https://get.k3s.io | sh -s - --dockerapiVersion: v1kind: Podmetadata:name: devicequeryspec:containers:- name: nvidiaimage: jitteam/devicequery:latestcommand: [ "./deviceQuery" ]./deviceQuery Starting...CUDA Device Query (Runtime API) version (CUDART static linking)Detected 1 CUDA Capable device(s)Device 0: "NVIDIA Tegra X1"CUDA Driver Version / Runtime Version 10.2 / 10.2CUDA Capability Major/Minor version number: 5.3Total amount of global memory: 3964 MBytes (4156780544 bytes)( 1) Multiprocessors, (128) CUDA Cores/MP: 128 CUDA CoresGPU Max Clock rate: 922 MHz (0.92 GHz)…Result = PASS
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 7https://github.com/opendatacam/opendatacam
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 8https://k3s.io/K3sとはRancher Labsが開発した軽量なKubernetesディストリビューション
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 9https://www.cncf.io/certification/software-conformance/K3sとは• 軽量だがCertified Kubernetes distribution • CNCF Sandbox project
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 10K3sの特徴1. シングルプロセス1. Kubernetes Master, Kubelet, containerd2. 必須ではないコードを削除し、リソースを節約3. SQLite(default) / MariaDB / PostgreSQL / MySQL / etcd4. X86_64, Arm64, Armv75. TLS Certification管理6. Helm Chart内蔵7. L4/L7レイヤのLB機能内蔵8. バイナリ︓50MB程度9. Minimum MEM︓ 512 MB/server, 75MB/node10. Minimum CPU︓ 1 core
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 11アーキテクチャーMariaDBPostgreSQLMySQLETCDCanalCalicohttps://rancher.com/docs/k3s/latest/en/installation/datastore/https://rancher.com/docs/k3s/latest/en/installation/network-options/https://rancher.com/docs/k3s/latest/en/advanced/#using-docker-as-the-container-runtimeDockerWebSocket
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 12RancherとはAmazonEKSAzureAKSGoogleGKECloudDatacenter Dev Branch EdgeOSSベースツールとサービス認証 & セキュリティセルフサービスによるKubernetesクラスタのデプロイと運⽤ & インフラストラクチャ管理ポリシー管理Pod & networksecurity policiesCIS benchmarkmonitoringRBACpoliciesConfigurationenforcementVisibility &diagnosticsCentralizedauditMonitoring& alertingKubernetes versionmanagementNode poolmanagementClusterprovisioningContainerStorageStorage Monitoring analytics App Catalog Service Mesh Side-car Proxy Loggingコンテナアプリケーション 1 コンテナアプリケーショ 2 コンテナアプリケーション 3Windows Linux
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 13Rancher - 複数クラスタの⼀元管理
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 14Rancher - 多様なクラスター環境を対応
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 15Rancher - 3rd partyプラグインの親和性
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 16システム構成Jetson0GPUCameraDiskJetson1GPUCameraDiskJetson2GPUCameraDiskDiskhttp://20.0.0.20:3xxxxhttp://20.0.0.21:3xxxxhttp://20.0.0.22:3xxxx
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 17アプリケーション構成Jetson Nano Developer Kit(JetPack)K3sOpenCVVideo StreamFlaskPyImageSearch +動体検知時の動画保存https://www.pyimagesearch.com/2019/09/02/opencv-stream-video-to-web-browser-html-page/
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 18• 電源は5V4AのACアダプターを使⽤• MicroUSBもあるが、最⼤2A• CUDAコアをフル稼働のため4Aが必要• V2以上のRasberry Pi カメラは使⽤可能試作環境使えず。。
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 19運⽤環境
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 20Demo! Demo! Demo!• K3sのインストール• Rancherシステムに追加• Rancher GUIでアプリケーションのデプロイ• app image, node port, volume, Privileged container.• 監視動作確認• 録画ファイル確認• k3sのアップグレードcurl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.17.9+k3s1 sh -s - --docker
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 21ユースケース録画データの低減 危険の事前検知複数監視ポイント対応
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 22• Jetson Nanoはパワフル• USBカメラ、WIFIモジュールがドライバなしですぐ使えた• ヒートシンクのおかげでファンなしでもいける(のはず)• オンラインのドキュメント、サンプルコードが充実• 改善して欲しいところ• WIFIモジュールがOnboardになって欲しい• ファン取り付けのネジ⽳が難あり感想 - ハードウェア
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 23• K3s• 環境構築が早い、k8s runtime的な存在• 最初からArm対応のためSBCに最適• リソース消費が少なく、他のアプリに回せる• Certificated K8sのため、学習コストがほぼない• Rancher• 複数クラスタを⼀元管理できたので楽• デプロイ、URLアクセスも全部GUIでできたので楽• 新しいサービスのデプロイが簡単感想 - ソフトウェア
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 24• 動体検知された時の通知機能• 本格的に屋外に利⽤するときの温湿度・⾬・⾵対策• の実装• CNCF Sandbox project• Armのサポートする予定(v1.2)• ディスク使⽤量・Heathyのモニタリング• Volumeの⾃動バックアップ(S3/NFS)Todo
© Copyright 2020 Rancher Labs. All Rights Reserved. Confidential 25 25Thank you