ROS Kubernetes Deployment Tutorial

Hi, ROS and Kubernetes users

I have been working to put together tutorials and operation how to deploy and manage the ROS / ROS 2 fleet using Kubernetes with sample yaml description and tutorials including installation, building multi-arch container images and Kubernetes deployment.

The following is still W.I.P, I will add more examples and useful sample description for Kubernetes.

as example, you can see how to deploy the following ROS fleet via Kubernetes.

you can see the following contents,

  • How to install and setup Kubernetes Cluster in local environment.
  • How to build ROS / ROS 2 container images multi-arch supported.
  • Example deployment yaml files to start ROS / ROS 2 fleet.
  • How to enable and bind CNI VxLAN to container runtime.
  • Managing node label to deploy the specific application container to specific physical node.
  • Taking advantage of DNS provided Kuberentes so resolve the node name dynamically. (means that we can deploy rosmaster or discovery server anywhere we want.)
  • More coming, issues are welcome :smile: (doing this best effort in my personal spare time…)

if you are interested in this, please reach out to me. I will add more examples and would like to know the use cases and problems.

Best,

12 Likes

More examples especially ROS 2 deployment,

ROS 2 Simple Distributed System

This example deploys ROS 2 application pods to any available nodes in the cluster, since we do not set the nodeselector , Kubernetes decides where to deploy the application container based on statistics from the system.

ROS 2 Localhost Only

This sample description starts deployment multiple application pods for each cluster node.
Application containers in each pod will only start communication in localhost only with ROS_LOCALHOST_ONLY=1 environmental variable which is bound to application container runtime.

ROS 2 Logical Partition / Multiple RMW Implementation

This section it will deploy the ROS 2 application containers with host network interface.

And taking advantage of Kubernetes ConfigMap (Shared virtual storage) to bind ROS 2 specific environmental variable via initializing container runtime.

After ConfigMap is created, in the yaml description, we can use those key-value content as environmental variables for ROS 2 containers, here it uses ROS_DOMAIN_ID and RMW_IMPLEMENTATION to have logical partition and different RMW implementation support.

The advantage of this example is to isolate configuration data and runtime container completely, so that we can bind any configuration data to any container runtime when starting the deployment.

2 Likes

Hi ROS Kubernetes / Container users,

I have put together some basic Kubernetes deployment tutorials for ROS 1 and ROS 2 in the following project.

I would like to walk through tutorials including demonstration and explanation for deployment yaml files to get feedback and use cases.

If you are interested, please reach out to me. This is gonna be ROS specific Kubernetes deployment discussion!

P.S, i would like to request the help to record the meeting at this time. So if anyone willing to do this together, that will be appreciated.

thanks,
Tomoya

4 Likes