Contents

KubeClipper 正式加入 CNCF Sandbox!

2023 年 6 月 29 日,KubeClipper 正式加入 CNCF Sandbox。

本文是转载的,点击这里阅读原文了解更多

几部分内容:

  • 1)KubeClipper 正式加入 CNCF Sandbox
  • 2)KubeClipper 介绍
  • 3)欢迎加入 KubeClipper 社区
    • 🤠想参与开源社区又找不到地方入手的小伙伴,机会来了
    • 扫描二维码加入 KubeClipper 技术讨论群~
    • ../../../img/kubeclipper/cncf/qrcode.jpg

1.你听我解释

1.1. CNCF 是什么?

CNCF,全称 Cloud Native Computing Foundation(云原生计算基金会),是 Linux 基金会旗下的子基金会。

CNCF 致力于为云原生软件构建可持续生态系统‎,涉及领域包括存储、计算、编排、调度、CI/CD、DevOps、服务治理、服务网关等。

Kubernetes 是 CNCF 最具代表性的项目之一。

1.2. 什么是 CNCF Sandbox?

CNCF 社区将项目分为沙盒项目(Sandbox)孵化项目(Incubating)毕业项目(Graduated)。著名的毕业项目有:Kubernetes、etcd、containerd、Prometheus、Helm等。完整的毕业和孵化项目列表查看地址:https://www.cncf.io/projects/

Sandbox 对应的是 CNCF 社区早期项目,列表为:https://www.cncf.io/sandbox-projects/。进入 Sandbox 需要 66% 以上的 TOC(技术委员会)成员赞成,即全部 11 人(https://github.com/cncf/toc#members)中的 8 人投赞成票。

1.3. 什么是 KubeClipper?

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 兼容性认证。

../../../img/kubeclipper/cncf/landspace.png

2023 年 06 月,KubeClipper 顺利加入 CNCF Sandbox 战斗序列~https://github.com/cncf/sandbox/issues/31

1.4. 你为什么需要 KubeClipper?

云原生的口号是:“业务上云,然后应用开发只关注业务本身”。

云平台把业务之外的 IT 问题都隐藏在平台之下,让应用的部署、运维、升级都尽可能地简单和自动化。

因此复杂不是云原生,正如卑微不是爱情,苦难不是财富,贫穷不是社会主义。

此时此刻,或往时往日,如果你在部署和运维 K8S 集群时感到繁复无趣,如果你在为此加班,喝着比命还苦的咖啡刷朋友圈,请相信:你并不孤单。KubeClipper 正是为此而生!

KubeClipper 是希望与正义之光,会穿透底层配置的枯燥乏味、拨开的 K8S 云平台的迷雾和黑暗,让简单快乐与你同在。

2.KubeClipper 做到了什么?

2.1. KubeClipper 予你至简依赖

2.1.1. 不依赖容器运行时

KubeClipper 不假设你已经安装了容器运行时,Docker 或 Containerd,或其它容器运行时。

KubeClipper 服务由 Systemd 托管,以二进制方式运行,支持 ARM64 和 X86-64。

2.1.2. 不依赖特定操作系统

KubeClipper 不假设你使用特定的操作系统,目前经测试的操作系统已包括大多数主流 Linux 发行版的 LTS 版本:

● Ubuntu 18.04 / 20.04 / 22.04

● CentOS 7.9

● Rocky 8.6

● OpenCloudOS 8.6

● 麒麟 v10

2.1.3. 不依赖包依赖管理工具

KubeClipper 不假设你使用特定的包依赖管理工具,DEB 或 RPM,apt 或 yum,因为根本不会涉及。

2.1.4. 不依赖 SSH 和管理网双向通信

KubeClipper 不假设管理网能双向通信,在管理过程中,KubeClipper Server 不需要访问主机节点的 SSH通道,也不需要主动连接主机节点的其它端口。

全过程中都只需要主机节点通过 KC-Agent 能单向访问 KubeClipper Server 节点即可。这保障了主机节点的运维安全性。

2.2. KubeClipper 予你齐全功能

KubeClipper 基于九州云的云平台通用管理工具 k8s-installer 重构并开源。九州云产品和交付团队将多年来 K8S 云平台交付的最佳实践融合在 k8s-installer 工具中,也因此一并传承给了其继任者 KubeClipper。

因此,KubeClipper 从开源伊始就具备了较为完备的功能项,能覆盖你在 K8S 集群管理过程中能想到的绝大部分功能。

2.2.1. 节点管理

KubeClipper 可以在页面查看平台中管理的全部节点列表(可以分区域,分子网),点击节点名称进入详情页面,可以查看节点的汇报信息(硬件 / 系统 / 状态)。

KubeClipper 中的节点状态表示 kc-agent 对节点的管理状态。正常情况下,节点状态显示为“就绪”,当节点失联后,状态会显示为“未知”,未知状态的节点无法进行任何操作。

../../../img/kubeclipper/cncf/node-management.png

2.2.2. 多区域管理

KubeClipper 管理主机节点的基本原理是在主机节点上安装 KC-Agent。KC-Agent 会通过消息队列自助式注册到 KC Server,然后用户就可以从界面查看到对应的节点,并下发指令进行管理。

KC-Agent 在注册主机信息时,会携带区域和子网信息。因此 KC Server 可以完成区域、子网拓扑结构的自动发现和集中管理。

2.2.3. 集群管理

KubeClipper 通过简约的 Web UI 和命令行工具快速方便地实现集群的创建、删除、升级、扩缩容、证书更新等Kubernetes 常用运维操作。

● 支持可插拔的集群插件管理

● 支持配置私有镜像仓库自签名证书

● 新增 CRI 镜像仓库配置功能

● 新增集群证书的更新、查看和下载功能

● 新增节点启用/禁用功能

● 支持多版本 calico 部署

● 支持指定集群 kubelet 数据目录

../../../img/kubeclipper/cncf/cluster-management.png

2.2.4. 集群升级

KubeClipper 容器平台初始默认提供 Kubernetes 1.23.6 稳定版,并支持多版本 Kubernetes 集群的创建和管理。当用户对 Kubernetes 版本有特定需求时,可以使用集群升级功能来升级当前的集群版本。

KubeClipper 容器平台为用户提供了无感化升级,集群升级时不会影响现有的业务,仅升级 Kubernetes 相关组件,避免了传统升级中会出现的业务中断的状况。

2.2.5. Kubectl 控制台

KubeClipper 可以访问运行中集群的 kubectl。点击集群操作中的“更多>访问 kubectl”,就可以在集群 kuebectl 弹窗中执行 kubectl 命令行操作。

../../../img/kubeclipper/cncf/kubectl.png

2.2.6. K8S Web 界面服务

KubeClipper 为用户提供向导式的 Web UI 操作界面以引导用户快速创建工作负载,能对所有 K8S 对象(Deployment、Statefulset、Deamonset、Job、CronJob、Service 等)进行直观化的调度和管理。

这是一个 One more thing 功能,Web 界面服务的源码尚未开源,但安装包已经提供下载,有需要的同学可以在技术交流群里申请,技术交流群的二维码见文末

此外,KubeClipper 补充了大量 e2e 测试,测试用例覆盖率达到 80% 以上,更方便开发者参与。

../../../img/kubeclipper/cncf/workload.png

2.2.7. 纳管已存在集群

Kubeclipper 提供了集群托管功能,帮助您将外部 K8S 集群(例如:本地数据中心 K8S 集群)接入 Kubeclipper 平台,进行统一管理。

Kubeclipper 实现了节点级的深度纳管,导入后外部集群也可以实现与 Kubeclipper 原生集群近乎一致的使用体验。

../../../img/kubeclipper/cncf/import-cluster.png

../../../img/kubeclipper/cncf/import-cluster2.png

2.2.8. 部署 Docker Registry

kcclt 命令行可以直接推送部署一个 Docker Registry,用于简易私有镜像仓库。

2.2.9. 证书管理

进入集群详情页即可看到当前集群证书过期时间,为了提高安全性,集群证书默认有效期为 1 年。

您可以通过单击 “更多>证书管理>更新集群证书” 按钮进行集群证书的自动更新,整个更新时长依据集群节点个数而定,一般 1~2 分钟即可完成更新。更新成功后集群证书有效期会延长 1 年。

../../../img/kubeclipper/cncf/cert-management.png

2.3. KubeClipper 予你高可靠和高可用

2.3.1. 内置的高可用架构

../../../img/kubeclipper/cncf/arch.png

● kubeclipper-server 使用 etcd 作为存储,推荐 3 副本部署。

● kubeclipper-agent 部署在节点上,采用自注册的方式向 kubeclipper-server 注册自己,并定时向 kubeclipper-server 发送心跳

● kubeclipper-server 通过消息队列向 kubeclipper-agent 下发命令或操作。默认使用 kubeclipper-server 内置的消息队列实现,也可以对接外部消息队列

● kubeclipper-agent 不向外暴露任何接口

● kcctl 和 kc-console 作为操作的入口,分别提供命令行和图形化界面操作

../../../img/kubeclipper/cncf/mq.png

2.3.2. 生产级的备份和恢复

集群备份是一项重要的运维操作,KubeClipper 支持对集群进行手动或自动备份服务。

用户可以为集群添加一次性或周期性的自动定时备份任务,在业务空闲时间为集群自动备份。

KubeClipper 还支持配置 FileSystem 或 S3 类型备份空间,对集群备份文件进行统一有序的管理。

2.3.3. 监控和计量

KubeClipper 集成 Prometheus / AlertManager / Grafana 监控系统,高效监管应用程序、集群(节点和工作负载对象),在此基础上,额外增加了一系列监控报表,方便用户查阅各类性能指标统计信息。

2.3.4. 操作幂等性

kubeClipper 支持操作的幂等性。所谓幂等性,指的是 KC-Server 在发起一个指令后,如果指令执行异常,KC-Server 可以多次重新触发该指令,直至指令完成。

2.3.5. 日志和审计

KubeClipper 提供完善的日志和审计,跟踪用户对平台各模块的操作行为,包括:平台管理,集群管理,监控等操作模块。每条操作日志都记录详细的操作内容、操作结果、操作者及操作时间等相关信息。所有的审计日志数据可以永久保留并支持关键词、自定义时间范围查询等索引手段。

3. KubeClipper 的典型应用场景

3.1. 裸金属服务器直接部署 K8S

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 version

kcctl 下载完成后即可部署 KubeClipper

AIO 模型下只需要以下命令即可实现部署

kcctl deploy

执行该命令后,Kcctl 将检查您的安装环境,若满足条件将会进入安装流程。在打印出如下的 KubeClipper banner 后即表示安装完成。

部署成功后您可以使用 kcctl 工具或者通过控制台创建 k8s 集群。在本快速入门教程中使用 kcctl 工具进行创建。

首先使用默认帐号密码进行登录获取 token,便于后续 kcctl 和 kc-server 进行交互。

kcctl login -H http://localhost -u admin -p Thinkbig1

然后使用以下命令创建 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 命令来查看集群健康状况。

3.2. 多区域 K8S 集群统一管理

得益于 Kubeclipper 的多区域管理功能,在添加节点时,可以手动指定节点所在区域,就像这样:

kcctl join --agent cn-shanghai:192.168.10.43

KC-Agent 启动后即可携带上区域信息注册到 KC-Server,如下图所示:

../../../img/kubeclipper/cncf/region-1.png

在创建集群时可以选择指定区域节点

../../../img/kubeclipper/cncf/region-2.png

使用指定区域下节点创建出的集群也会自动归类到该区域下。在区域管理中可以查看该区域下所有集群

../../../img/kubeclipper/cncf/region-3.png

也可以在集群管理界面查看所有集群

../../../img/kubeclipper/cncf/region-4.png

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 能力。

4.KubeClipper 未来还会做什么?

KubeClipper 还处于快速成长阶段,未来我们会继续保持轻量化、易使用的设计风格。除此之外,我们还计划:

  1. 提供 KoK(Kubernetes on Kubernetes)能力
  2. 对接 ABAC 或 RBAC 的 IAM(Identity and Access Management)系统
  3. 基于 Helm 的应用中心
  4. 更丰富的 CNI / CSI 和其它插件管理
  5. 对接 KubeEdge 或 K3S,增强云边协同

5. 快来 KubeClipper 社区领取好礼!

我们希望能通过 KubeClipper 项目结识更多志同道合的朋友,和我们一起看到这个项目茁壮成长。

如果您喜欢我们的项目,请在 GitHub 仓库上点个 Star,我们需要您的鼓励和支持!

https://github.com/kubeclipper/kubeclipper

参与开发贡献或开源活动,有机会获得精美周边哦~

../../../img/kubeclipper/cncf/gift.png

● 戳快速入门文档:

https://github.com/kubeclipper-labs/kubeclipper/blob/master/README_zh.md#quick-start,立即体验。

● KubeClipper 技术讨论群~

../../../img/kubeclipper/cncf/qrcode.jpg

点击这里阅读原文了解更多