From b2e71ca2ef5e5003012e2a5c9a8a1858124a8905 Mon Sep 17 00:00:00 2001 From: "Tomoya.Fujita" Date: Mon, 11 Sep 2023 22:38:31 -0700 Subject: [PATCH 1/4] add KubeEdge installation procedure. Signed-off-by: Tomoya.Fujita --- README.md | 10 +-- docs/Setup_KubeEdge.md | 99 ++++++++++++++++++++++++++++ images/kubeedge-system-overview.png | Bin 0 -> 60273 bytes images/system_overview.odp | Bin 547108 -> 547621 bytes 4 files changed, 105 insertions(+), 4 deletions(-) create mode 100644 docs/Setup_KubeEdge.md create mode 100644 images/kubeedge-system-overview.png diff --git a/README.md b/README.md index 50351e1..6578eba 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,15 @@ [![build-docker-images](https://github.com/fujitatomoya/ros_k8s/actions/workflows/build-docker-images.yml/badge.svg)](https://github.com/fujitatomoya/ros_k8s/actions/workflows/build-docker-images.yml) -# ROS Kubernetes +# ROS Kubernetes / KubeEdge ## Abstract -This repository provides tutorials how to use ROS and ROS 2 with Kubernetes Cluster System. +This repository provides tutorials how to use ROS and ROS 2 with Kubernetes and KubeEdge Cluster System. User might need to have knowledge about Kubernetes to understand what is really going on the cluster system. ## Motivation -The primary goal for this repository is that everyone can try ROS and ROS 2 with Kubernetes Cluster. +The primary goal for this repository is that everyone can try ROS and ROS 2 with Kubernetes and KubeEdge Cluster. Using container images and container orchestration allows application developer to be agnostic from system platform but only application logic. ROS and ROS 2 provides good isolation between nodes, so that we can take the most advantage of application runtime framework and container orchestration. @@ -51,6 +51,7 @@ This environment is very much useful to try or test your container images or ser - [Install Kubernetes Packages](./docs/Install_Kubernetes_Packages.md) - [Build ROS / ROS 2 Full Docker Images](./docs/Build_Docker_Images.md) - [Setup Kuberenetes Cluster](./docs/Setup_Kubernetes_Cluster.md) +- [Setup KubeEdge Cloud/Edge Node](./docs/Setup_KubeEdge.md) - [Setup Virtualized Kuberenetes Cluster](./docs/Setup_Virtualized_Cluster.md) - [ROS Deployment Demonstration](./docs/ROS_Deployment_Demonstration.md) - [ROS 2 Deployment Demonstration](./docs/ROS2_Deployment_Demonstration.md) @@ -64,7 +65,8 @@ This environment is very much useful to try or test your container images or ser ## Reference -- [kubernetes official documentation](https://kubernetes.io/docs/home/) +- [Kubernetes Official Documentation](https://kubernetes.io/docs/home/) +- [KubeEdge Official Documentation](https://kubeedge.io/docs/welcome/getting-started) - [Kubernetes IN Docker](https://kind.sigs.k8s.io/) - [ROS Noetic](http://wiki.ros.org/noetic) - [ROS Rolling](https://docs.ros.org/en/rolling/) diff --git a/docs/Setup_KubeEdge.md b/docs/Setup_KubeEdge.md new file mode 100644 index 0000000..18c722b --- /dev/null +++ b/docs/Setup_KubeEdge.md @@ -0,0 +1,99 @@ +# Setup KubeEdge + +KubeEdge is to extend native containerized application orchestration capabilities to hosts at Edge. +That said, KubeEdge requires Kubernetes cluster running already in the cluster infrastructure. +Tunneling between cloudcore and edgecore provides control-plane connectivity beyond internet, so that edge devices behind NAT or different network can join the cluster running in the cloud infrastructure. +Kubernetes worker nodes are transparent, so that the same operation can be applied with Kubernetes. + +![KubeEdge System Overview](./../images/kubeedge-system-overview.png) + +## Reference + +- [KubeEdge Github](https://github.com/kubeedge/kubeedge) +- [KubeEdge Official Documentation](https://kubeedge.io/) + +## Kubernetes Compatibility + +In this repo, we use Kubernetes `v1.25.13` because it seems to be working fine with latest KubeEdge. +According to the [KubeEdge Kubernetes Compatibility](https://github.com/kubeedge/kubeedge#kubernetes-compatibility), `v1.25.13` is not officially supported yet. +So it is recommended that you probably use `v1.23.xx` to keep the compatibility with KubeEdge if necessary or avoid possible problems. + +## Container Network Interface (CNI) + +Although [KubeEdge Roadmap](https://github.com/kubeedge/kubeedge/blob/master/docs/roadmap.md#integration-and-verification-of-third-party-cni) mentions that it supports CNI, it still requires the CNI dependent special operation to instantiate the CNI implementation with KubeEdge. + +Please see more details for, +- [KubeEdge didn't support Weave CNI](https://github.com/kubeedge/kubeedge/issues/3935) +- [KubeEdge edgecore supports CNI Cilium](https://github.com/kubeedge/kubeedge/issues/4844) + +At this moment, we user host network interface only. + +KubeEdge community has been developing [edgemesh](https://github.com/kubeedge/edgemesh) for next-generation data-plane component, including the support as CNI. + +## Setup Kubernetes API Server + +As explained above, KubeEdge requires Kubernetes cluster running. +In other words, Kubernetes API server must be running before KubeEdge installation. + +see [Setup Kubernetes API Server](./Setup_Kubernetes_Cluster.md#setup-kubernetes-api-server) and [Access API-server](./Setup_Kubernetes_Cluster.md#access-api-server). + +In Kubernetes workloads, it requires one of CNI implementation running to set up the cluster. +see [Deploy CNI Plugin](https://github.com/fujitatomoya/ros_k8s/blob/master/docs/Setup_Kubernetes_Cluster.md#deploy-cni-plugin) to start the CNI for Kubernetes. (this CNI can only be used by Kubernetes worker nodes but KubeEdge.) + +## Setup KubeEdge + +### Install keadm + +- KubeEdge Cloud Core Node (amd64) + +```bash +root@tomoyafujita-HP-Compaq-Elite-8300-SFF:~/ros_k8s# wget https://github.com/kubeedge/kubeedge/releases/download/v1.14.2/keadm-v1.14.2-linux-amd64.tar.gz +root@tomoyafujita-HP-Compaq-Elite-8300-SFF:~/ros_k8s# tar -zxvf keadm-v1.14.2-linux-amd64.tar.gz +keadm-v1.14.2-linux-amd64/ +keadm-v1.14.2-linux-amd64/version +keadm-v1.14.2-linux-amd64/keadm/ +keadm-v1.14.2-linux-amd64/keadm/keadm +root@tomoyafujita-HP-Compaq-Elite-8300-SFF:~/ros_k8s# cp keadm-v1.14.2-linux-amd64/keadm//keadm /usr/local/bin/keadm +root@tomoyafujita-HP-Compaq-Elite-8300-SFF:~/ros_k8s# keadm version +version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.2", GitCommit:"5036064115fad46232dee1c8ad5f1f84fde7984b", GitTreeState:"clean", BuildDate:"2023-09-04T01:54:06Z", GoVersion:"go1.17.13", Compiler:"gc", Platform:"linux/amd64"} +``` + +- KubeEdge Edge Node (arm64) + +```bash +root@ubuntu:~/ros_k8s# wget https://github.com/kubeedge/kubeedge/releases/download/v1.14.2/keadm-v1.14.2-linux-arm64.tar.gz +root@ubuntu:~/ros_k8s# tar -zxvf keadm-v1.14.2-linux-arm64.tar.gz +keadm-v1.14.2-linux-arm64/ +keadm-v1.14.2-linux-arm64/version +keadm-v1.14.2-linux-arm64/keadm/ +keadm-v1.14.2-linux-arm64/keadm/keadm +root@ubuntu:~/ros_k8s# cp keadm-v1.14.2-linux-arm64/keadm/keadm /usr/local/bin/keadm +root@ubuntu:~/ros_k8s# keadm version +version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.2", GitCommit:"5036064115fad46232dee1c8ad5f1f84fde7984b", GitTreeState:"clean", BuildDate:"2023-09-04T01:54:04Z", GoVersion:"go1.17.13", Compiler:"gc", Platform:"linux/arm64"} +``` + +### Cloud Core + +```bash +XXX +``` + +### Edge Core + +```bash +XXX +``` + +## Break Down KubeEdge + +KubeEdge can be uninstalled via the following commands. + +```bash + +``` + +## KubeEdge Test Deployment + +```bash +xxx +``` diff --git a/images/kubeedge-system-overview.png b/images/kubeedge-system-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..494328a1eb73d8e5fc0364f3fb53967f6f6fcc6c GIT binary patch literal 60273 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

-^DXZo;#x=zi7S=4LVhr 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 Kwo1k_?7sj?>g=ij literal 0 HcmV?d00001 diff --git a/images/system_overview.odp b/images/system_overview.odp index 0c4cc5c370093cb172d4a7b6b922a57af89ebf3b..f347ec399a11154d0f2ba840efa27640ed17999b 100644 GIT binary patch delta 21035 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 Date: Fri, 15 Sep 2023 00:33:00 -0700 Subject: [PATCH 2/4] add KubeEdge cloudcore and edgecore installation. Signed-off-by: Tomoya.Fujita --- docs/Setup_KubeEdge.md | 119 ++++++++++++++++++++++++++++++++-- yaml/ros2-sample-hostnic.yaml | 67 +++++++++++++++++++ yaml/ubuntu22-daemonset.yaml | 1 + 3 files changed, 180 insertions(+), 7 deletions(-) create mode 100644 yaml/ros2-sample-hostnic.yaml diff --git a/docs/Setup_KubeEdge.md b/docs/Setup_KubeEdge.md index 18c722b..7b04b70 100644 --- a/docs/Setup_KubeEdge.md +++ b/docs/Setup_KubeEdge.md @@ -14,9 +14,14 @@ Kubernetes worker nodes are transparent, so that the same operation can be appli ## Kubernetes Compatibility -In this repo, we use Kubernetes `v1.25.13` because it seems to be working fine with latest KubeEdge. +**CAUTION** + According to the [KubeEdge Kubernetes Compatibility](https://github.com/kubeedge/kubeedge#kubernetes-compatibility), `v1.25.13` is not officially supported yet. -So it is recommended that you probably use `v1.23.xx` to keep the compatibility with KubeEdge if necessary or avoid possible problems. +For using KubeEdge, we need to downgrade Kubernetes to `v1.23.17` as following. + +```bash +root@tomoyafujita-HP-Compaq-Elite-8300-SFF:~# apt install -y --allow-downgrades kubeadm=1.23.17-00 kubelet=1.23.17-00 kubectl=1.23.17-00 +``` ## Container Network Interface (CNI) @@ -37,6 +42,9 @@ In other words, Kubernetes API server must be running before KubeEdge installati see [Setup Kubernetes API Server](./Setup_Kubernetes_Cluster.md#setup-kubernetes-api-server) and [Access API-server](./Setup_Kubernetes_Cluster.md#access-api-server). + +**CAUTION: MAYBE NO NEED** + In Kubernetes workloads, it requires one of CNI implementation running to set up the cluster. see [Deploy CNI Plugin](https://github.com/fujitatomoya/ros_k8s/blob/master/docs/Setup_Kubernetes_Cluster.md#deploy-cni-plugin) to start the CNI for Kubernetes. (this CNI can only be used by Kubernetes worker nodes but KubeEdge.) @@ -74,26 +82,123 @@ version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.2", GitCommit:"50 ### Cloud Core +- with the configuration, we will deploy the KubeEdge `cloudcore` to Kubernetes master node. Basically master node has the taints not to schedule the pods to keep the system resource for Kubenretes. So we need to remove that taint so that we can deploy the `cloudcore` pods to the mater node. (if this operation is not done, `keadm init` will fail with `Error: timed out waiting for the condition`) + ```bash -XXX +root@tomoyafujita-HP-Compaq-Elite-8300-SFF:~# kubectl get nodes -o json | jq '.items[].spec.taints' +[ + { + "effect": "NoSchedule", + "key": "node-role.kubernetes.io/master" + } +] + +root@tomoyafujita-HP-Compaq-Elite-8300-SFF:~# kubectl taint nodes tomoyafujita-hp-compaq-elite-8300-sff node-role.kubernetes.io/master:NoSchedule- +node/tomoyafujita-hp-compaq-elite-8300-sff untainted + +root@tomoyafujita-HP-Compaq-Elite-8300-SFF:~# kubectl get nodes -o json | jq '.items[].spec.taints' +null ``` -### Edge Core +- start KubeEdge `cloudcore`. ```bash -XXX +root@tomoyafujita-HP-Compaq-Elite-8300-SFF:~# keadm init --advertise-address=192.168.1.248 --profile version=v1.12.1 +Kubernetes version verification passed, KubeEdge installation will start... +CLOUDCORE started +=========CHART DETAILS======= +NAME: cloudcore +LAST DEPLOYED: Thu Sep 14 22:09:35 2023 +NAMESPACE: kubeedge +STATUS: deployed +REVISION: 1 + +root@tomoyafujita-HP-Compaq-Elite-8300-SFF:~# kubectl get all -n kubeedge +NAME READY STATUS RESTARTS AGE +pod/cloudcore-77b5dfdd57-btmlp 1/1 Running 0 24s + +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/cloudcore 1/1 1 1 24s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/cloudcore-77b5dfdd57 1 1 1 24s ``` -## Break Down KubeEdge +### Edge Core KubeEdge can be uninstalled via the following commands. +- get security token from cloudcore. + ```bash +root@tomoyafujita-HP-Compaq-Elite-8300-SFF:/# keadm gettoken +40d9bb8bb2c3818728da3d46f1a78b58f4b9fba8665cc392ded4698d1eb5cab1.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2OTQ4NDA5ODN9.niGZHHdR7s89K4-919fCNKEVTyudb8DtTmE9p5PFzKg +``` +- start KubeEdge `edgecore` + +```bash +root@ubuntu:~# keadm join --cloudcore-ipport=192.168.1.248:10000 --token=40d9bb8bb2c3818728da3d46f1a78b58f4b9fba8665cc392ded4698d1eb5cab1.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2OTQ4NDA5ODN9.niGZHHdR7s89K4-919fCNKEVTyudb8DtTmE9p5PFzKg --kubeedge-version=v1.12.1 --runtimetype=docker --cgroupdriver systemd +I0915 06:28:19.544584 10424 command.go:845] 1. Check KubeEdge edgecore process status +I0915 06:28:19.578838 10424 command.go:845] 2. Check if the management directory is clean +I0915 06:28:19.579238 10424 join.go:107] 3. Create the necessary directories +I0915 06:28:19.580874 10424 join.go:184] 4. Pull Images +Pulling kubeedge/installation-package:v1.12.1 ... +Pulling kubeedge/pause:3.6 ... +Pulling eclipse-mosquitto:1.6.15 ... +I0915 06:28:19.590357 10424 join.go:184] 5. Copy resources from the image to the management directory +I0915 06:28:27.255374 10424 join.go:184] 6. Start the default mqtt service +I0915 06:28:27.256005 10424 join.go:107] 7. Generate systemd service file +I0915 06:28:27.256873 10424 join.go:107] 8. Generate EdgeCore default configuration +I0915 06:28:27.256988 10424 join.go:270] The configuration does not exist or the parsing fails, and the default configuration is generated +W0915 06:28:27.263577 10424 validation.go:71] NodeIP is empty , use default ip which can connect to cloud. +I0915 06:28:27.270836 10424 join.go:107] 9. Run EdgeCore daemon +I0915 06:28:34.350843 10424 join.go:435] +I0915 06:28:34.350933 10424 join.go:436] KubeEdge edgecore is running, For logs visit: journalctl -u edgecore.service -xe + +root@ubuntu:~# systemctl status edgecore +● edgecore.service + Loaded: loaded (/etc/systemd/system/edgecore.service; enabled; vendor preset: enabled) + Active: active (running) since Fri 2023-09-15 06:28:34 UTC; 1min 9s ago + Main PID: 10603 (edgecore) + Tasks: 16 (limit: 9190) + Memory: 31.4M + CPU: 11.565s + CGroup: /system.slice/edgecore.service + └─10603 /usr/local/bin/edgecore +... +``` + +- check cluster nodes. + +```bash +root@tomoyafujita-HP-Compaq-Elite-8300-SFF:~# kubectl get nodes -o wide +NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME +tomoyafujita-hp-compaq-elite-8300-sff Ready control-plane,master 104m v1.23.17 192.168.1.248 Ubuntu 20.04.6 LTS 5.15.0-83-generic docker://24.0.5 +ubuntu Ready agent,edge 97s v1.22.6-kubeedge-v1.12.1 192.168.1.238 Ubuntu 22.04.3 LTS 5.15.0-1034-raspi docker://24.0.5 ``` ## KubeEdge Test Deployment ```bash -xxx +root@tomoyafujita-HP-Compaq-Elite-8300-SFF:/home/tomoyafujita/DVT/github.com/fujitatomoya/ros_k8s/yaml# kubectl apply -f ros2-sample-hostnic.yaml +deployment.apps/ros2-talker-1 created +deployment.apps/ros2-listener-1 created + +root@tomoyafujita-HP-Compaq-Elite-8300-SFF:/home/tomoyafujita/DVT/github.com/fujitatomoya/ros_k8s/yaml# kubectl get pods -o wide +NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES +ros2-listener-1-64c4c996b4-scm9k 1/1 Running 0 14m 192.168.1.248 tomoyafujita-hp-compaq-elite-8300-sff +ros2-talker-1-bdd899d8d-drt2f 1/1 Running 0 14m 192.168.1.238 ubuntu +``` + +## Break Down KubeEdge + +```bash +root@tomoyafujita-HP-Compaq-Elite-8300-SFF:~# keadm reset --force +I0915 00:26:18.977824 114454 util_unix.go:104] "Using this format as endpoint is deprecated, please consider using full url format." deprecatedFormat="" fullURLFormat="unix://" +Failed to remove MQTT container: failed to new container runtime: unable to determine image API version: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial unix: missing address" +root@tomoyafujita-HP-Compaq-Elite-8300-SFF:~# \rm -rf /etc/kubeedge/* +root@tomoyafujita-HP-Compaq-Elite-8300-SFF:~# kubeadm reset --force +[reset] Reading configuration from the cluster... +root@tomoyafujita-HP-Compaq-Elite-8300-SFF:~# \rm -rf $HOME/.kube/config ``` diff --git a/yaml/ros2-sample-hostnic.yaml b/yaml/ros2-sample-hostnic.yaml new file mode 100644 index 0000000..84eb903 --- /dev/null +++ b/yaml/ros2-sample-hostnic.yaml @@ -0,0 +1,67 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ros2-talker-1 +spec: + replicas: 1 + selector: + matchLabels: + app: ros2-talker-1 + template: + metadata: + labels: + app: ros2-talker-1 + spec: + containers: + - image: tomoyafujita/ros:rolling + command: ["/bin/bash", "-c"] + args: ["source /opt/ros/$ROS_DISTRO/setup.bash && ros2 topic pub /chatter1 std_msgs/String \"data: Hello, I am talker-1\""] + imagePullPolicy: IfNotPresent + tty: true + name: ros2-talker-1 + nodeSelector: + kubernetes.io/hostname: ubuntu + hostNetwork: true + tolerations: + - key: node-role.kubernetes.io/master + operator: Exists + effect: NoSchedule + - key: node-role.kubernetes.io/control-plane + operator: Exists + effect: NoSchedule + restartPolicy: Always + +--- + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ros2-listener-1 +spec: + replicas: 1 + selector: + matchLabels: + app: ros2-listener-1 + template: + metadata: + labels: + app: ros2-listener-1 + spec: + containers: + - image: tomoyafujita/ros:rolling + command: ["/bin/bash", "-c"] + args: ["source /opt/ros/$ROS_DISTRO/setup.bash && ros2 topic echo /chatter1 std_msgs/String"] + imagePullPolicy: IfNotPresent + tty: true + name: ros2-listener-1 + nodeSelector: + kubernetes.io/hostname: tomoyafujita-hp-compaq-elite-8300-sff + hostNetwork: true + tolerations: + - key: node-role.kubernetes.io/master + operator: Exists + effect: NoSchedule + - key: node-role.kubernetes.io/control-plane + operator: Exists + effect: NoSchedule + restartPolicy: Always diff --git a/yaml/ubuntu22-daemonset.yaml b/yaml/ubuntu22-daemonset.yaml index d5b9f30..95fce55 100644 --- a/yaml/ubuntu22-daemonset.yaml +++ b/yaml/ubuntu22-daemonset.yaml @@ -18,6 +18,7 @@ spec: command: ["/bin/bash", "-c"] args: ["sleep 3600"] imagePullPolicy: IfNotPresent + #hostNetwork: true tolerations: - key: node-role.kubernetes.io/master operator: Exists From 01d66fbcf77a363cb1ece3565bbed96482ad8a79 Mon Sep 17 00:00:00 2001 From: "Tomoya.Fujita" Date: Thu, 21 Sep 2023 17:32:12 -0700 Subject: [PATCH 3/4] add KubeEdge with Micro-ROS / ROS 2 example diagram. Signed-off-by: Tomoya.Fujita --- images/system_overview.odp | Bin 547621 -> 553228 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/images/system_overview.odp b/images/system_overview.odp index f347ec399a11154d0f2ba840efa27640ed17999b..a48a97794919dc3135c7bb0350409461535ef2a2 100644 GIT binary patch delta 28879 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 W5A~N03<9D4J+A(SgtGqUQvM%Zk)pEz delta 23156 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�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 From d27be614c937ffc23f99dfbc0079fee71f933b95 Mon Sep 17 00:00:00 2001 From: "Tomoya.Fujita" Date: Mon, 2 Oct 2023 23:26:31 -0700 Subject: [PATCH 4/4] minor comment fixes. Signed-off-by: Tomoya.Fujita --- docs/Setup_KubeEdge.md | 7 +++++-- yaml/ros2-sample-hostnic.yaml | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/Setup_KubeEdge.md b/docs/Setup_KubeEdge.md index 7b04b70..87a1fbe 100644 --- a/docs/Setup_KubeEdge.md +++ b/docs/Setup_KubeEdge.md @@ -43,11 +43,14 @@ In other words, Kubernetes API server must be running before KubeEdge installati see [Setup Kubernetes API Server](./Setup_Kubernetes_Cluster.md#setup-kubernetes-api-server) and [Access API-server](./Setup_Kubernetes_Cluster.md#access-api-server). -**CAUTION: MAYBE NO NEED** - In Kubernetes workloads, it requires one of CNI implementation running to set up the cluster. see [Deploy CNI Plugin](https://github.com/fujitatomoya/ros_k8s/blob/master/docs/Setup_Kubernetes_Cluster.md#deploy-cni-plugin) to start the CNI for Kubernetes. (this CNI can only be used by Kubernetes worker nodes but KubeEdge.) +**TODO: CNI needs to be uninstalled** + +This is only required to bring the Kubenretes API-server running, because we are going to deploy cloudcore to the same physical node with Kubernetes API-server. +Instead of having CNI deployed to bring the Kubernetes API-server up and runnig, we are not able to deploy cloudcore to the node since we cannot deploy the containers to any `NotReady` nodes. + ## Setup KubeEdge ### Install keadm diff --git a/yaml/ros2-sample-hostnic.yaml b/yaml/ros2-sample-hostnic.yaml index 84eb903..e6a3d40 100644 --- a/yaml/ros2-sample-hostnic.yaml +++ b/yaml/ros2-sample-hostnic.yaml @@ -55,7 +55,7 @@ spec: tty: true name: ros2-listener-1 nodeSelector: - kubernetes.io/hostname: tomoyafujita-hp-compaq-elite-8300-sff + kubernetes.io/hostname: tomoyafujita hostNetwork: true tolerations: - key: node-role.kubernetes.io/master