简单的搭建k3s的Server已经在上一篇文章中介绍了。
k3s是支持各种系统或者核心。本人也在三中不同架构的ubuntu22.04系统中进行了测试,分别是amd64(戴尔笔记本和虚拟机),arm64(M1 Mac的虚拟机)和arm64(NVIDIA Orin Jetpack 6 DP版本)。其中后面两个arm64版本的kernel是不同的,所以在某些设置中也有有很多坑。
在amd64和arm64的笔记本或者虚拟机中,k3s的Server和Agent,根据官网的介绍和配置都是很容易搭建的。拥有不同身份的不同设备之间的通信是否顺利是k3s集群环境搭建的唯一难点。通常情况下,并不需要在deployment的yaml文件中添加额外的设置,或者是添加其他的网络配置文件,不同集群之间就可以正常通信。但是本人在项目中还使用树莓派4B和Nvidia Orin 64GB对k3s进行了测试,可想而知,他们是需要额外的配置。其中,根据官网的介绍,在树莓派中需要额外地安装内核模块(网上有教程)。Nvidia Orin 64GB中的Ubuntu 22.04默认使用的Cgroup是V2版本,查看了其他的Ubuntu22.04系统,都是Cgroup2版本。个人猜测,Ubuntu 22.04应该是默认使用了Cgroup2的控制群组版本。然而Nvidia Orin的Cgroup2版本无法支持容器找到相对应的服务API,根据网上的教程可以使用Cgroup1版本的控制群组。因为Nvidia Orin没有和普通Ubuntu系统的Grub引导文件,所以在修改引导文件中绕了很多弯路。而且经过本人的测试,Nvidia Orin只有在host-gw的flannel-backend模式下,k3s服务才能正常地安装,启动以及添加后续的集群。而且server和master的flannel-backend的模式需要保持一致,而且k3s默认的flannel-backend的模式是vxlan,所以在Nvidia Orin搭建k3s集群就需要特别注意网络配置。
接下去就简单介绍一下k3s server和agent的安装,搭建环境:
| master | Ubuntu 22.04 | VM amd64 | 192.168.0.105 | ros2-talker |
| agent | Ubuntu 22.04 | VM arm64 | 192.168.0.244 | ros2-listener |
docker需要根据k3s官网给出的脚本安装对应的20.10版本,在上一篇文章提到过,版本不对可能会导致镜像无法找到。
首先需要在两个设备分别添加host信息:
sudo -i
vim /etc/hosts
将下面两行添加进入hosts文件:
192.168.0.105 master
192.168.0.244 agent
如何修改hostname已经在上一篇文章中介绍过。接下来分别在两台设备中安装k3s。
k3s server端
url -sfL https://get.k3s.io | INSTALL_K3S_EXEC="server --token 12345 --docker" sh -s -
k3s agent端
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="agent --server https://192.168.0.105:6443 --token 12345 --docker" sh -s -
port 6443需要给定,否则agent无法正常连接到server。
结果显示如下:
root@master:~# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master 13h v1.28.5+k3s1
agent Ready <none&g

本文详细描述了作者在AMD64和arm64架构的Ubuntu22.04系统,以及NVIDIAOrinJetpack6DP环境下搭建k3s服务器和代理的历程,重点讲述了跨平台通信配置、Cgroup版本问题和Flannel网络设置。
1776

被折叠的 条评论
为什么被折叠?



