k0s 是一个很不错的边缘以及iot k8s 平台,提供了快速的部署以及管理能力,但是我们很多时候还是需要进行跨区域进行部署以及业务访问的,跨区域的网络处理一般有点费事,比如是使用vpn 还是其他解决方案是有成本以及维护的问题的,以下是一个基于sd-wan 的尝试结局方法
参考玩法
简单说明,对于不同zone 我们部署不同的组件,比如controller 以及workers,网络上直接使用kube-router, 因为我们通过sd-wan 直接将
所有节点都打通了(网络service 以及node pod ip 段),这样的网络是符合k8s对于网络的要求的,同时也能解决跨zone 的网络访问
一些问题
当然以上是有一些问题的:
- 网络时延的影响,sd-wan 的时延会影响跨zone 业务访问的体验,可以通过标签以及部署调度的优先级处理
- 镜像分发问题,对于镜像的使用处理分发的影响还是比较重要的,一般镜像都有一些大
- 跨区域lb 问题,当然此问题方法很多,一种是使用域名这样可以规避一个ip 的问题,多区域优先使用本地的ip访问(需要结合dns)
说明
以上是一个简单的玩法,通过sd-wan 可以临时解决跨区域k0s 部署访问的问题,技术简单验证上是通过的,而且只要我们的sd-wan 网络够稳定,灵活性还是很不错的,比如基于easytier,zerotier,tailscale 等,实际上easytier 的稳定性以及灵活性还是很不错的,值得尝试下,当然对于k3s的玩法实际上也可以参考类似的,如果网络环境的确比较恶劣,选择其他更好支持离线的k8s 方案会更好一些
参考资料
https://docs.k0sproject.io/stable/high-availability/
https://github.com/tailscale/tailscale
https://github.com/zerotier/ZeroTierOne
https://github.com/EasyTier/Easytier
https://openyurt.io/
https://github.com/openyurtio/openyurt
https://kubeedge.io/
https://github.com/kubeedge/kubeedge