当前位置: 首页 > 科技观察

推荐4款超好用的本地Kubernetes部署工具

时间:2023-03-16 14:28:10 科技观察

在讨论这个话题之前,我们不得不问一个问题:我们本地开发者真的需要一个Kubernetes吗?这是必要的吗?我觉得这个答案没有必要,并不是所有的本地开发者都需要有一个独立的Kubernetes集群来使用,但是如果满足以下其中一个需求,就需要创建一个本地的Kubernetes集群:1.开发的应用是密切相关的到Kubernetes。例如,应用程序将使用KubernetesAPI。这类应用需要部署在Kubernetes中才能发挥作用。2.开发的应用需要用到一些Kubernetes资源才能看出区别。例如,当KubernetesHPA发生时,你想确认应用程序是否能按预期工作。这种类型的应用程序还需要本地Kubernetes集群进行测试。3、开发人员本身就是公司的基础设施维护人员。比如他们要设计Jenkins和Kubernetes的联动测试,在正式上传到公司环境之前可能需要在本地进行相关测试。好处可能是不用先开云机,可以先省钱,用VM测试相关功能。4、开发的应用有很多依赖,比如Redis、Kafaka、Memcached等,这种情况下,本地有一个Kuberentes可能会更方便。除了上面的原因(肯定还有其他的场景,这里就不一一列举了),我觉得剩下的场景还是应该通过Docker/Docker-Compose来完成。相关环境搭建完成后,即可供开发者进行测试。如果今天想一想,确认确实有必要在本地测试Kubernetes,我们可以想一想,我想一个开发者如何使用这个本地的Kubernetes。个人希望这个方案能有以下特点:易于设置和构建,最好是几个按钮,可以用命令完成,无需任何UI干预,能够模拟多个节点,最好能结合上面的所有东西打包成一个脚本,运行一个命令后,我们推荐四套不同的开源软件:Kubeadm、Minikube、KIND、K3D。KubeadmKubeadm是一个由政府维护的开源项目。我认为这是一种非常简单的测试方法。它将通过systemd维护Kubelet。然后通过容器启动controller/scheduler/kube-proxy等Kubernetes核心组件。在使用上,Kubeadm本身并不难。您可以通过命令行创建所有必需的资源。唯一需要注意的是,安装完成后,需要手动安装CNI解决方案。整个Kubernetes安装完成。kubeadm本身也支持搭建多节点集群,但是使用起来不是那么方便。需要先创建一个Master节点并生成相应的token/key,然后其他节点使用kubeadm命令加入创建的集群。一般来说,Kubeadm可以满足以上需求,但是实现起来会有点繁琐,尤其是在多节点的情况下,还需要处理Token/key信息。另外CNI的安装也需要自己搞定,不过作为单节点测试环境也算好用。MinikubeMinikube也是一个官方维护的项目。其自身的架构最初依赖于VM(虚拟机)来帮助用户创建一个新的测试Kubernetes集群。任何平台的开发者都可以轻松使用它,因为它会帮你启动一个全新的VM。当虚拟机启动后,它会通过kubeadm帮助你创建和配置Kubernetes集群,并帮助你安装CNI等命令。除了依赖VM,它还提供了不同的底层。比如none可以通过kubeadm直接在机器上建立。基本上整个架构会变得很像kubeadm。最大的区别是CNI也会帮助你安装完成。另外,Mnikube本身也有自己的一些套件,可以把一些功能封装进去。我对这个功能的看法既不好也不坏。好的是它提供了用户测试功能的环境,真的很方便。好处是可能会让用户认为这些功能是Kubernetes固有的,反而会被误解。他们甚至可能在不知不觉中学习到它们背后的原理。一般来说,Minikube也能满足上面的部分需求。多节点部分可能会运行多个VM来构建,消耗的资源相对较多。KINDKIND的全称是KubernetesInDocker。顾名思义,所有Kubernetes节点都运行在Docker模式下。每个Docker容器都是一个Kubernetes节点,可以充当Worker或Master。使用起来非常简单。您可以使用KIND命令和配置文件轻松构建Kubernetes集群。由于所有操作都由KIND完成,因此创建多个节点也非常简单。你只需要在配置文件中设置需要多少个节点即可。节点和各自的身份,然后一条命令搞定一切,不需要和CNI打交道,KIND自己搞定。总的来说,KIND可以满足以上所有需求,多节点部分由Docker管理,所以在资源和启动速度上都有不错的效果。有了Vagrant,可以很方便的打包一个多节点的VM环境,方便测试人员开发。K3DK3D是Rancher开发的K3S的Docker版本。K3S是一个轻量级的Kubernetes平台,适合在一些计算资源较低的系统上使用。K3D直接将K3S移植到Docker中,让用户更方便的创建K3S集群。使用起来也非常简单。整个主要结构在k3d执行文件上。使用此命令和不同的参数可以快速创建一个多节点的Kubernetes集群。另外,还可以通过命令动态增加节点。很方便。和KIND一样,CNI部分也会一起处理,所以用户真的只需要一个命令就可以搞定一切。总的来说,K3D可以满足以上所有要求,其优点与KIND基本相似。使用Vagrant,你可以真正轻松地搭建一个多节点的仿真环境。