集群套件

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

集群套件

今天,我们很高兴地宣布,Platform9 在 GitHub 上的 Apache v2.0 许可下开源了 Klusterkit,这是一套包含三个工具的套件。

我们的客户在私人数据中心推出软件,这些数据中心通常不连接到互联网(出于安全或其他原因)。 这些大公司希望利用 Kubernetes 对其应用程序进行现代化改造,同时将它们部署到不同的数据中心,而这些数据中心通常不与外界连接。 这就是 Klusterkit 的用武之地,它可以让您在物理隔离的环境中轻松配置和管理 K8s 集群。

Klusterkit 包含三个独立的工具,可以一起或单独使用来管理 Kubernetes 生产集群的生命周期:

  1. etcdadm, CLI 用于简化 etcd 集群管理。
  2. 节点管理器,用于节点管理的 CLI,可扩展 kubeadm 并部署 kubeadm 所需的依赖项。
  3. CCTL是一个集群生命周期管理工具,采用 Kubernetes 社区的 Cluster API,使用 nodeadm 和 etcdadm 在本地甚至物理隔离的环境中无缝交付和维护高可用的 Kubernetes 集群。

这三个工具一起执行以下任务:

  • 通过集群 API 在物理隔离的本地环境中轻松配置和管理高度可用的 etcd 集群和 Kubernetes 仪表板。
  • 使用 etcd 备份在发生故障后恢复集群控制面板。
  • 打包将 Kubernetes 交付到物理隔离环境中所需的所有工件。

集群套件功能

  • 多主支持(HA集群K8s)。
  • 安全 etcd 集群的交付和管理。
  • 在物理隔离的环境中工作。
  • 支持滚动升级和回滚。
  • Flannel (vxlan) 作为后端的 CNI; 有计划支持其他 CNI。
  • 仲裁丢失后 etcd 集群的备份和恢复。
  • 防止控制面板内存和 CPU 时间耗尽。

Klusterkit解决方案架构

集群套件

为了容错性和简单性,Klusterkit 使用单个 cctl-state.yaml 文件来存储 Kubernetes 集群元数据。 通过 cctl CLI,您可以在任何具有此状态文件的计算机上管理 Kubernetes 集群的生命周期。 这可以是操作员的笔记本电脑或属于 Kubernetes 集群一部分的任何其他计算机。

Cctl 从上游实现并调用 cluster-api 接口,作为集群上 CRUD 操作的库。 他用 ssh 提供者,来自 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 文件、etcd 容器镜像和相应的配置文件)可以轻松复制到物理隔离的主机上使用 cctl、nodeadm 和 etcdadm。 (详情见 维基).

4 – 一切就绪后,您可以使用几个命令创建第一个 Kubernetes 集群:

– 首先为集群创建凭据。

$GOPATH/bin/cctl create credential --user root --private-key ~/.ssh/id_rsa

– 然后创建一个集群对象。 –help 显示支持的选项列表。

$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上.

来源: habr.com

添加评论