1 openEuler

版本至少在 22.03-LTS-SP1 以上

1
2
dnf install -y docker conntrack-tools socat
dnf install -y kubernetes*

1.1 安装集群自动化部署工具

1.1.1 minikube

1
2
3
# aarch64
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-arm64
chmod +x minikube-linux-arm64 && sudo mv minikube-linux-arm64 /usr/local/bin/minikube

1.1.2 k3s

1.2 启动docker镜像

将当前用户加入 docker 权限组.

1
2
sudo usermod -aG docker $USER
newgrp docker

编写 Docker 配置文件.

下面的 Dockerfile 可以试试, 不知道为什么可能安装不了.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# openEuler 24.03
FROM openeuler/openeuler:24.03

RUN echo 'nameserver 8.8.8.8' > /etc/resolv.conf && \
echo 'nameserver 114.114.114.114' >> /etc/resolv.conf

RUN echo '[openEulerROS-humble]' > /etc/yum.repos.d/ros.repo && \
echo 'name=openEulerROS-humble' >> /etc/yum.repos.d/ros.repo && \
echo 'baseurl=https://eulermaker.compass-ci.openeuler.openatom.cn/api/ems1/repositories/ROS-SIG-Multi-Version_ros-humble_openEuler-24.03-LTS-TEST4/openEuler%3A24.03-LTS/aarch64/' >> /etc/yum.repos.d/ros.repo && \
echo 'enabled=1' >> /etc/yum.repos.d/ros.repo && \
echo 'gpgcheck=0' >> /etc/yum.repos.d/ros.repo

# 安装不了就注释掉这一群指令
RUN dnf makecache && \
dnf install -y \
ros-humble-desktop \
python3-pip \
python3-colcon-common-extensions && \
dnf clean all

# 安装不了就注释掉这一群指令
RUN pip install torch colcon-common-extensions \
pandas seaborn

RUN echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc

CMD ["/bin/bash"]

构建 Docker 镜像.

1
docker build -t ros-yolo:test .

部署docker集群.

1
minikube start --driver=docker

加载镜像.

1
minikube image load ros-yolo-openeuler:test

简单启一个pod.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: ros-yolo-pod
spec:
containers:
- name: ros-yolo
image: ros-yolo-openeuler:test
imagePullPolicy: IfNotPresent
command: ["sleep", "infinity"]
resources:
limits:
memory: "4Gi"
cpu: "2"

之后创建 pod.

1
kubectl apply -f ros-yolo-pod.yaml

可以进入 pod 中查看.

1
kubectl exec -it ros-yolo-pod -- bash

一键启动.

1
kubectl exec ros-yolo-pod -c ros-yolo -- bash -c "cd /ros2_ws && source install/setup.bash && ros2 run image_yolo publisher_node" & kubectl exec ros-yolo-pod -c ros-yolo -- bash -c "cd /ros2_ws && source install/setup.bash && ros2 run image_yolo subscriber_node"