はじめに
ROS の初心者が、とっても簡単なROSアプリを作ってみました。(連載記事です)
今回の記事の概要
- 画像蓄積用 ROS アプリ(Subscriber)と画像参照 Flask アプリを稼働させる k8s ノード(amd64)の設定
- k8s ノード(amd64)へのラベル付けと共有ディレクトリの作成
- k8s ノード(amd64)上にて、multimaster_fkie を稼働させる
- 今回の記事に該当するソースファイルは、以下のアドレスから参照可能です
構築手順
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
- RDBOX(k8s)のダッシュボードに接続
- [+ CREATE] をクリックし、picam-app-sub-photo.yaml を Upload(先ほど表示された YAML データを Copy&Paste しても可)
- Pod が配備されるまで、しばらく待つ
マニフェスト(yaml)の要点
- [template]-[spec]-[volumes] にて、ノード(amd64)上のディレクトリをコンテナから利用(mount)可能に設定
- 画像蓄積用 ROS アプリ(Subscriber)コンテナと画像参照 Flask アプリコンテナにて、このディレクトリをマウントして共用
- ROSアプリが稼働する k8s ノード(amd64)上にて、multimaster_fkie も稼働させる
- この結果、ROS アプリからは localhost で ROS MASTER が稼働しているかのように利用できる
- ほとんど設定することなく multimaster_fkie が ROS MASTER との通信を処理してくれる
- k8s の node にて、画像蓄積用 ROS アプリ(Subscriber)と画像参照 Flask アプリを、同居稼働させる
- この結果、共有Volume(NFSなど)の設定を省略できた(本サービスの場合は必要だし、きちんと構成を検討する必要あり)