今天在逛Hacker News的时候,发现大家在热烈讨论一个叫K3S的东西。
K8S天天接触,但K3S就还真的头一次听说。本次好奇的内心点开了链接,结果……
什么是K3S
K3S是一个轻量级的K8S集群,它是Rancher Lab开发的一个新的产品, 目的是在资源有限的设备上面跑K8S。它的最大特点就是小,二进制包只有40MB,只需要512MB的内存就能跑起来。K3S目的是在一些资源受限的设备上面把Kubernetes跑起来,主要的应用场景包括Edge,IoT,CI和ARM等等,比如在树莓派上面就能跑。
至于为什么叫K3S呢,官方就一句话
k3s - 5 less than k8s
看了半天,楞是没明白这个巴掌少在哪里。放弃……
K3S的工作原理
K3S其实可以看做一个剪裁版的K8S,例如它把所有alpha feature都去掉了,所有in-tree的storage driver,plugin等等也去掉的,所以整个执行文件编译出来会非常小。
其中K3S有个非常有意思的的功能,就是可以使用SQLite3来代替ETCD。是的,你在也不用为了找机器来安装ETCD而烦恼了!
引用官方的一副图来简单描述一下它的整个架构
不难看出,K3S是一个麻雀虽小,五脏俱全的东西,apiserver,scheduelr,controller-manager,kubelet这些K8S的组件一个都没有少。K3S在这些组件之上,提供了K3S Server 和 K3S Agent这两个可执行文件。有空再实践一下这个server和agent是怎么玩的。:-)
思考
我觉得平时的K3S对日常的测试场景还是挺实用的,大家都可以在自己的环境里面搭个K8S来测试镜像。而且这个k8s是可以不依赖etcd的,所有资源信息都保存在sqllite3里面。没有ETCD的话,会进一步降低部署的复杂度。
可能有人会说,测试环境为什么不用minikube这种all-in-one的K8S来setup啊? minukube主要的不足是很耗资源,minikube起来后基本上整台机器就没剩多少CPU和内存了,更别说测试镜像了。