2023 年 6 月 29 日,KubeClipper 正式加入 CNCF Sandbox!
https://github.com/cncf/toc/issues/1105
CNCF,全称 Cloud Native Computing Foundation(云原生计算基金会),是 Linux 基金会旗下的子基金会。
CNCF 致力于为云原生软件构建可持续生态系统,涉及领域包括存储、计算、编排、调度、CI/CD、DevOps、服务治理、服务网关等。
Kubernetes 是 CNCF 最具代表性的项目之一。
CNCF 社区将项目分为沙盒项目(Sandbox)、孵化项目(Incubating)、毕业项目(Graduated)。著名的毕业项目有:Kubernetes、etcd、containerd、Prometheus、Helm等。完整的毕业和孵化项目列表查看地址:Graduated and Incubating Projects | Cloud Native Computing Foundation
Sandbox 对应的是 CNCF 社区早期项目,列表为:Sandbox Projects | Cloud Native Computing Foundation。
进入 Sandbox 需要 66% 以上的 TOC(技术委员会)成员赞成,即全部 11 人(GitHub - cncf/toc: ⚖️Technical Oversight Committee (TOC))中的 8 人投赞成票。
KubeClipper 致力于提供极简且通用的 K8S 管理工具,Github 地址:https://github.com/kubeclipper/kubeclipper
KubeClipper 基于 Kubeadm 封装,你可以通过 Web 界面、API,或命令行工具(kcctl)来管理主机节点,可以快速创建和删除 K8S 集群,并可以对已存在的 K8S 集群进行纳管、升级、配置变更、应用部署,以及扩、缩容等操作。
KubeClipper 类似于 AutoK3S,区别是 AutoK3S 针对的是 K3S,而 KubeClipper 则面向标准 K8S 集群,提供生命周期管理服务。
2022 年 08 月,KubeClipper 由 99cloud(浙江九州云信息科技有限公司)发起,正式开源。
2022 年 11 月,KubeClipper 通过 CNCF K8S 兼容性认证。
2023 年 06 月,KubeClipper 顺利加入 CNCF Sandbox 战斗序列~https://github.com/cncf/sandbox/issues/31
1.4. 你为什么需要 KubeClipper?
云原生的口号是:“业务上云,然后应用开发只关注业务本身”。
云平台把业务之外的 IT 问题都隐藏在平台之下,让应用的部署、运维、升级都尽可能地简单和自动化。
因此复杂不是云原生,正如卑微不是爱情,苦难不是财富,贫穷不是社会主义。
此时此刻,或往事往日,如果你在部署和运维 K8S 集群时感到繁复无趣,如果你在为此加班,喝着比命还苦的咖啡刷朋友圈,请相信:你并不孤单。KubeClipper 正是为此而生!
KubeClipper 是希望与正义之光,会穿透底层配置的枯燥乏味、拨开的 K8S 云平台的迷雾和黑暗,让简单快乐与你同在。
KubeClipper 不假设你已经安装了容器运行时,Docker 或 Containerd,或其它容器运行时。
KubeClipper 服务由 Systemd 托管,以二进制方式运行,支持 ARM64 和 X86-64。
KubeClipper 不假设你使用特定的操作系统,目前经测试的操作系统已包括大多数主流 Linux 发行版的 LTS 版本:
Ubuntu 18.04 / 20.04 / 22.04
CentOS 7.9
Rocky 8.6
OpenCloudOS 8.6
麒麟 v10
KubeClipper 不假设你使用特定的包依赖管理工具,DEB 或 RPM,apt 或 yum,因为根本不会涉及。
KubeClipper 不假设管理网能双向通信,在管理过程中,KubeClipper Server 不需要访问主机节点的 SSH 通道,也不需要主动连接主机节点的其它端口。
全过程中都只需要主机节点通过 KC-Agent 能单向访问 KubeClipper Server 节点即可。这保障了主机节点的运维安全性。
KubeClipper 基于九州云的云平台通用管理工具 k8s-installer 重构并开源。九州云产品和交付团队将多年来 K8S 云平台交付的最佳实践融合在 k8s-installer 工具中,也因此一并传承给了其继任者 KubeClipper。
因此,KubeClipper 从开源伊始就具备了较为完备的功能项,能覆盖你在 K8S 集群管理过程中能想到的绝大部分功能。
KubeClipper 可以在页面查看平台中管理的全部节点列表(可以分区域,分子网),点击节点名称进入详情页面,可以查看节点的汇报信息(硬件 / 系统 / 状态)。
KubeClipper 中的节点状态表示 kc-agent 对节点的管理状态。正常情况下,节点状态显示为“就绪”,当节点失联后,状态会显示为“未知”,未知状态的节点无法进行任何操作。
2.2.2. 多区域管理
KubeClipper 管理主机节点的基本原理是在主机节点上安装 KC-Agent。KC-Agent 会通过消息队列自助式注册到 KC Server,然后用户就可以从界面查看到对应的节点,并下发指令进行管理。
KC-Agent 在注册主机信息时,会携带区域和子网信息。因此 KC Server 可以完成区域、子网拓扑结构的自动发现和集中管理。
KubeClipper 通过简约的 Web UI 和命令行工具快速方便地实现集群的创建、删除、升级、扩缩容、证书更新等Kubernetes 常用运维操作。
支持可插拔的集群插件管理
支持配置私有镜像仓库自签名证书
新增 CRI 镜像仓库配置功能
新增集群证书的更新、查看和下载功能
新增节点启用/禁用功能
支持多版本 calico 部署
支持指定集群 kubelet 数据目录
2.2.4. 集群升级
KubeClipper 容器平台初始默认提供 Kubernetes 1.23.6 稳定版,并支持多版本 Kubernetes 集群的创建和管理。当用户对 Kubernetes 版本有特定需求时,可以使用集群升级功能来升级当前的集群版本。
KubeClipper 容器平台为用户提供了无感化升级,集群升级时不会影响现有的业务,仅升级 Kubernetes 相关组件,避免了传统升级中会出现的业务中断的状况。
KubeClipper 可以访问运行中集群的 kubectl。点击集群操作中的“更多>访问 kubectl”,就可以在集群 kuebectl 弹窗中执行 kubectl 命令行操作。
KubeClipper 为用户提供向导式的 Web UI 操作界面以引导用户快速创建工作负载,能对所有 K8S 对象(Deployment、Statefulset、Deamonset、Job、CronJob、Service 等)进行直观化的调度和管理。
这是一个 One more thing 功能,Web 界面服务的源码尚未开源,但安装包已经提供下载,有需要的同学可以在技术交流群里申请,技术交流群的二维码见文末。
此外,KubeClipper 补充了大量 e2e 测试,测试用例覆盖率达到 80% 以上,更方便开发者参与。
2.2.7. 纳管已存在集群
Kubeclipper 提供了集群托管功能,帮助您将外部 K8S 集群(例如:本地数据中心 K8S 集群)接入 Kubeclipper 平台,进行统一管理。
Kubeclipper 实现了节点级的深度纳管,导入后外部集群也可以实现与 Kubeclipper 原生集群近乎一致的使用体验。
2.2.8. 部署 Docker Registry
kcclt 命令行可以直接推送部署一个 Docker Registry,用于简易私有镜像仓库。
进入集群详情页即可看到当前集群证书过期时间,为了提高安全性,集群证书默认有效期为 1 年。
您可以通过单击 "更多>证书管理>更新集群证书" 按钮进行集群证书的自动更新,整个更新时长依据集群节点个数而定,一般 1~2 分钟即可完成更新。更新成功后集群证书有效期会延长 1 年。
2.3. KubeClipper 予你高可靠和高可用
kubeclipper-server 使用 etcd 作为存储,推荐 3 副本部署。
kubeclipper-agent 部署在节点上,采用自注册的方式向 kubeclipper-server 注册自己,并定时向 kubeclipper-server 发送心跳
kubeclipper-server 通过消息队列向 kubeclipper-agent 下发命令或操作。默认使用 kubeclipper-server 内置的消息队列实现,也可以对接外部消息队列
kubeclipper-agent 不向外暴露任何接口
kcctl 和 kc-console 作为操作的入口,分别提供命令行和图形化界面操作
2.3.2. 生产级的备份和恢复
集群备份是一项重要的运维操作,KubeClipper 支持对集群进行手动或自动备份服务。用户可以为集群添加一次性或周期性的自动定时备份任务,在业务空闲时间为集群自动备份。
KubeClipper 还支持配置 FileSystem 或 S3 类型备份空间,对集群备份文件进行统一有序的管理。
KubeClipper 集成 Prometheus / AlertManager / Grafana 监控系统,高效监管应用程序、集群(节点和工作负载对象),在此基础上,额外增加了一系列监控报表,方便用户查阅各类性能指标统计信息。
kubeClipper 支持操作的幂等性。所谓幂等性,指的是 KC-Server 在发起一个指令后,如果指令执行异常,KC-Server 可以多次重新触发该指令,直至指令完成。
KubeClipper 提供完善的日志和审计,跟踪用户对平台各模块的操作行为,包括:平台管理,集群管理,监控等操作模块。每条操作日志都记录详细的操作内容、操作结果、操作者及操作时间等相关信息。所有的审计日志数据可以永久保留并支持关键词、自定义时间范围查询等索引手段。
KubeClipper 通过简约的 Web UI 和命令行工具快速方便地实现集群的创建、删除、升级、扩缩容、证书更新等 Kubernetes 常用运维操作。使用 KubeClipper 可以极大降低运维难度,提升运维效率。
以部署 K8S 为例,借助 KubeClipper 我们只需要一条命令即可完成集群创建。
整个操作流程如下:
1)下载 kcctl 命令行工具
2)部署 KubeClipper
3)部署 K8S 集群
KubeClipper 提供了命令行工具 kcctl 以简化运维工作,您可以直接使用以下命令下载最新版 kcctl:
curl -sfL https://oss.kubeclipper.io/get-kubeclipper.sh | KC_REGION=cn KC_VERSION=v1.3.4 bash -
通过以下命令检测是否安装成功:
kcctl vers
kcctl 下载完成后即可部署 KubeClipper
AIO 模型下只需要以下命令即可实现部署
kcctl deploy
执行该命令后,Kcctl 将检查您的安装环境,若满足条件将会进入安装流程。在打印出如下的 KubeClipper banner 后即表示安装完成。
部署成功后您可以使用 kcctl 工具或者通过控制台创建 k8s 集群。在本快速入门教程中使用 kcctl 工具进行创建。
首先使用默认帐号密码进行登录获取 token,便于后续 kcctl 和 kc-server 进行交互。
kcctl login -H http://localhost -u admin -p Thinkbig
然后使用以下命令创建 k8s 集群:
NODE=$(kcctl get node -o yaml|grep ipv4DefaultIP:|sed 's/ipv4DefaultIP: //')
# 若获取失败请使用 kcctl get node 命令手动指定节点 ID
echo $NODE
kcctl create cluster --master $NODE --name demo --untaint-master
大概 3 分钟左右即可完成集群创建,也可以使用以下命令查看集群状态
kcctl get cluster -o yaml|grep status -A5
进入 Running 状态即表示集群安装完成,您可以使用 kubectl get cs 命令来查看集群健康状况。
得益于 Kubeclipper 的多区域管理功能,在添加节点时,可以手动指定节点所在区域,就像这样:
kcctl join --agent cn-shanghai:192.168.10.43
KC-Agent 启动后即可携带上区域信息注册到 KC-Server,如下图所示:
在创建集群时可以选择指定区域节点
使用指定区域下节点创建出的集群也会自动归类到该区域下。在区域管理中可以查看该区域下所有集群
也可以在集群管理界面查看所有集群
3.3. 弹性 K8S 即服务
KaaS(K8S as a Service)是一种向租户直接提供 K8S 集群的算力交付形式,类似交付虚拟机或者云硬盘。在公有云场景中比较常见,比如 AWS 的 EKS,Azure 的 AKS,Aliyun 的 ACK。
私有云场景中,OpenStack 也有 Magnum 服务,直接提供 KaaS 服务。Magnum 默认的 Guest OS 是 Fedora Atomic 或 CoreOS,用于生产环境不太容易。可以让 Magnum 对接 KubeClipper API,这样租户集群能从容选择 Guest OS、容器运行时、网络插件、存储插件。也可以直接通过 KubeClipper 对接 KubeVirt 来实现 KaaS 能力。
KubeClipper 还处于快速成长阶段,未来我们会继续保持轻量化、易使用的设计风格。除此之外,我们还计划:
提供 KoK(Kubernetes on Kubernetes)能力
对接 ABAC 或 RBAC 的 IAM(Identity and Access Management)系统
基于 Helm 的应用中心
更丰富的 CNI / CSI 和其它插件管理
对接 KubeEdge 或 K3S,增强云边协同
我们希望能通过 KubeClipper 项目结识更多志同道合的朋友,和我们一起看到这个项目茁壮成长。
如果您喜欢我们的项目,请在 GitHub 仓库上点个 Star,我们需要您的鼓励和支持!GitHub - kubeclipper/kubeclipper: Manage kubernetes in the most light and convenient way ☸️
参与开发贡献或开源活动,有机会获得精美周边哦~
戳快速入门文档,立即体验:
kubeclipper/README_zh.md at master · kubeclipper/kubeclipper · GitHub