1 Minikube

Minikube是由Kubernetes社区维护的单机版的Kubernetes集群快速部署工具,目前支持MacOS、Linux以及Windows等多种操作系统平台,非常适合在自己的笔记本上作为Kubernetes入门环境或作为开发测试环境使用,当然由于只支持单节点不支持高可用因此不能用于生产部署。

Kubernetes常见部署工具介绍及比较_java

由于支持跨平台,但是我们知道MacOS以及Windows是不支持直接运行容器的,因此Minikube默认会启动一个Linux虚拟机,然后在虚拟机上通过kubeadm部署Kubernetes集群,关于kubeadm工具下面将会介绍。当然如果运行的OS本身就是Linux系统,则可以通过指定--vm-driver=none参数直接部署Kubernetes集群在操作系统上,不需要虚拟机,不过需要自己手动部署Docker。使用Minikube部署单节点Kubernetes非常简单,可以参考官方文档,这里不再介绍。

2. kind

kind是Kubernetes社区新维护的一个本地测试环境快速部署工具,除了用于本地测试,未来还可能用于做Kubernetes本身的CI集成测试。目前kind工具仍处于开发阶段,可以查看版本1.0的roadmap。

Kubernetes常见部署工具介绍及比较_java_02

如kind的官方Logo所示,kind把Kubernetes的Node节点运行在Docker容器上,因此需要提前安装Docker。

3 kops

kops是生产级别的Kubernetes集群部署、升级和管理命令行工具,它主要用于在公有云平台上通过Terraform自动创建虚拟机作为节点并自动化部署Kubernetes集群,目前官方支持的公有云平台为AWS,GCE、DigitalOcean、OpenStack目前处于beta阶段。

Kubernetes常见部署工具介绍及比较_java_03

国内fitcloud开源的KubeOperator也是一个类似的工具,通过Web UI在VMware、OpenStack和物理机上规划、部署和运营生产级别的Kubernetes集群。

4 kubespray

Kubespray使用Ansible部署生产级别的Kubernetes集群。对于已经了解Ansible的人们来说,该工具是一个不错的选择,因为无需使用其他工具进行预配和编排。

5 kubeadm

kubeadm是和Kubernetes一块发布的集群部署工具,与Kubernetes在同一个代码仓库中,因此可以说kubeadm是Kubernetes最亲的部署工具,目前使用最多的,同时也是社区最为推荐的Kubernetes部署工具。

Kubernetes常见部署工具介绍及比较_java_04

该工具的目标是实现尽可能简单地部署符合最佳实践、满足基本安全合规要求的Kubernetes高可用集群,因此基本不需要太多的配置,就能快速的部署一套生产可用的Kubernetes集群。另外其实很多其他的部署工具也都是基于kubeadm实现的,前面提到的minikube、kind等工具都是基于kubeadm实现的。

6 部署工具对比

除了以上介绍的部署工具,还有很多其他的部署工具,这些工具中:

  • minikube和kind主要用于单机测试,一般不用于生产部署。

  • kops主要用于在IaaS云平台上部署集群,如果在公有云上部署可以尝试使用这个工具。

  • kubespray需要依赖Ansible自动化工具,如果熟悉Ansible可以尝试使用。

  • kubeadm是Kubernetes项目自带的部署工具,社区最为推荐并且目前使用最多的工具,该工具基本不依赖外部工具,也基本不需要额外配置就可以快速搭建一个符合最佳实践的Kubernetes平台。