[はじめてのRDBOX(8)]rdbox使ってみました:RDBOX(k8s) Subscriber アプリ編


はじめに

ROS の初心者が、とっても簡単なROSアプリを作ってみました。(連載記事です)

今回の記事の概要

構築手順

k8sラベル付けと共有ディレクトリ作成

  • k8s master に ssh
  • アプリを配置する k8s ノード(今回は RDBOX-HQ 側 amd64)を確認(get nodes)
  • アプリを配置する k8s ノードを制御するため、k8sノードにラベル付け(label node 'LABEL')
  • 同ノードに、画像ファイルを共有するためのディレクトリを作成
  • 以下(↓)は具体的な手順
$ ssh -i YourKeyFile -l ubuntu YourKubeMaster
Enter passphrase for key 'YourKeyFile':
$ sudo kubectl --kubeconfig /etc/kubernetes/admin.conf get nodes
$ sudo kubectl --kubeconfig /etc/kubernetes/admin.conf label node YourKubeNode01 node.rdbox.com/type=picam-data
$ ssh -i YourKeyFile ubuntu@YourKubeNode01 "sudo mkdir -p /opt/picam_data/photo ; sudo chmod 775 /opt/picam_data/photo ; ls -la /opt/picam_data/photo"

マニフェスト(yaml)作成

  • 画像蓄積用 ROS アプリ(Subscriber)コンテナと画像参照 Flask アプリコンテナの稼働設定
  • 以下(↓)は具体的な手順
$ export PICAM_DATA=/opt/picam_data
$ export PICAM_PORT=8080
$ cd ${HOME}/git/example-picam/kubernetes
$ ./picam-app-sub-photo.sh | tee picam-app-sub-photo.yaml
#### ここにマニフェスト(yaml)が表示されます(ファイルにも保存される) ###

マニフェスト(yaml) Upload

  1. RDBOX(k8s)のダッシュボードに接続
  2. [+ CREATE] をクリックし、picam-app-sub-photo.yaml を Upload(先ほど表示された YAML データを Copy&Paste しても可)
  3. Pod が配備されるまで、しばらく待つ

マニフェスト(yaml)の要点

  1. [template]-[spec]-[volumes] にて、ノード(amd64)上のディレクトリをコンテナから利用(mount)可能に設定
    • 画像蓄積用 ROS アプリ(Subscriber)コンテナと画像参照 Flask アプリコンテナにて、このディレクトリをマウントして共用
  2. ROSアプリが稼働する k8s ノード(amd64)上にて、multimaster_fkie も稼働させる
    • この結果、ROS アプリからは localhost で ROS MASTER が稼働しているかのように利用できる
    • ほとんど設定することなく multimaster_fkie が ROS MASTER との通信を処理してくれる
  3. k8s の node にて、画像蓄積用 ROS アプリ(Subscriber)と画像参照 Flask アプリを、同居稼働させる
    • この結果、共有Volume(NFSなど)の設定を省略できた(本サービスの場合は必要だし、きちんと構成を検討する必要あり)

記事リスト

  1. 概要編
  2. 画像参照アプリの構築編
  3. ROSパッケージ作成編
  4. ROS Subscriber編
  5. ROS Publisher編
  6. DockerImage 作成編
  7. RDBOX(k8s) ポート転送編
  8. RDBOX(k8s) Subscriber アプリ編(← 今回の記事)
  9. RDBOX(k8s) Publisher アプリ編
  10. 雑記