KlusterKit:一个开源工具包,用于简化Kubernetes部署并在物理隔离的本地环境中工作

今天,我们很高兴地宣布,Platform9在GitHub的Apache v2.0许可下打开了Klusterkit的源代码,这是一个三工具套件。
我们的客户在专用数据中心中推出软件,这些数据中心通常不连接到Internet(出于安全原因或其他原因)。 这些大型公司希望利用Kubernetes并使他们的应用程序现代化,同时将它们推广到通常与外界没有任何联系的不同数据中心。 而Klusterkit可以解决这个问题,它简化了在物理隔离的环境中K8集群的交付和管理。
Klusterkit包含三个独立的工具,可以一起使用或分别使用这些工具来管理Kubernetes生产集群的生命周期:
- etcdadm ,用于简化集群管理的CLI等。
- nodeadm ,一个节点管理CLI,可补充kubeadm并部署kubeadm所需的依赖项。
- cctl是一个集群生命周期管理工具,它接受Kubernetes社区的Cluster API,并使用nodeadm和etcdadm在本地甚至物理隔离的环境中轻松提供和维护高可用性的Kubernetes集群。
这三个工具一起执行以下任务:
- 通过Cluster API在物理隔离的本地环境中轻松交付和管理高可用性etcd集群和Kubernetes控制面板。
- 发生故障后,请使用etcd备份还原群集控制面板。
- 包装在物理隔离的环境中交付Kubernetes所需的所有工件。
Klusterkit功能
- 多个向导支持(K8s HA群集)。
- 供应和管理安全集群etcd
- 在物理隔离的环境中工作。
- 支持顺序更新和回滚。
- 法兰绒(vxlan)作为后端的CNI; 计划支持其他CNI。
- 丢失仲裁后备份和还原etcd群集。
- 保护控制面板以免耗尽内存和CPU时间。
Klusterkit解决方案架构

为了容错和简化,Klusterkit使用单个cctl-state.yaml文件存储Kubernetes集群元数据。 通过cctl CLI,您可以在具有此状态文件的任何计算机上管理Kubernetes群集的生命周期。 它可以是运营商的笔记本电脑,也可以是Kubernetes集群中任何其他计算机。
Cctl作为群集上的CRUD操作库,从上游接口cluster-api实现和调用。 它使用ssh-provider ,这是Platform9的开源裸机cluster-api 提供程序 ,它依次调用etcdadm和nodeadm在集群上执行操作。
如何使用Klusterkit及其组件:
1-可以使用go get命令轻松组装这三个工具中的任何一个:
go get -u github.com/platform9/cctl go get -u github.com/platform9/nodeadm go get -u github.com/kubernetes-sigs/etcdadm
2-然后,可以将这些可执行文件打包并复制到应运行高度可访问的Kubernetes集群的目标计算机上。 将nodeadm和etcdadm文件放在版本目录中:
cp $GOPATH/bin/nodeadm /var/cache/ssh-provider/nodeadm// cp $GOPATH/bin/etcdadm /var/cache/ssh-provider/etcdadm//
3-如有必要,在物理隔离的环境中本地编排Kubernetes集群,可以使用nodeadm和etcdadm download命令预先将必需的依赖项轻松地预先下载到具有Internet访问权限的计算机上。 然后可以轻松地将下载的元素(即kubelet和systemd的kubelet单元文件,CNI可执行文件,kubeadm文件,所有容器映像(包括Kubernetes),keepalived映像和systemd文件,容器映像等以及相应的配置文件)复制到物理隔离的主机以及cctl,nodeadm和etcdadm。 (有关详细信息,请参见Wiki )。
4-一切就绪后,您可以使用以下命令创建第一个Kubernetes集群:
-首先为群集创建凭据。
$GOPATH/bin/cctl create credential --user root --private-key ~/.ssh/id_rsa
-然后创建一个群集对象。 –帮助列出了受支持的选项。
$GOPATH/bin/cctl create cluster --pod-network 192.168.0.0/16 --service-network 192.169.0.0/24
-最后,在集群中创建第一台计算机。
$GOPATH/bin/cctl create machine --ip $MACHINE_IP --role master
在GitHub上阅读更多文档。