KubeClipper 1.6.0 发布:kcctl 优化与 K8s 1.36 支持

kubeclipper-release-1.6.0.jpg

KubeClipper 发布了 1.6.0 版本:支持 Kubernetes 1.36,容器运行时从 Containerd 1.x 升级到 2.x,Calico 更新到 v3.31.5。kcctl 新增了 kcctl set clusterkcctl operation 等命令,并优化了 Registry 管理体验,修复了大量稳定性问题。

KubeClipper 是一个轻量便捷的 Kubernetes 多集群全生命周期管理工具,旨在提供易使用、易运维、极轻量、生产级的 Kubernetes 多集群管理服务,让运维工程师从繁复的配置和晦涩的命令行中解放出来,实现一站式管理跨区域、跨基础设施的多 K8S 集群。

🚀 5分钟快速体验

如果你是第一次接触 KubeClipper,可以通过以下步骤快速上手:

  1. 一键安装工具curl -sfL https://oss.kubeclipper.io/get-kubeclipper.sh | KC_REGION=cn bash -
  2. 部署服务kcctl deploy
  3. 创建集群kcctl create cluster --name demo --master YOUR_IP --untaint-master
  4. 访问界面:浏览器访问 http://YOUR_IP:8080,账号 admin/Thinkbig1

四条命令,从零到一个跑起来的 K8s 集群。

1. KubeClipper 1.6.0 新特性详解

1.6.0 的主要变化集中在三块:K8s 最新版本支持、Containerd v2 适配、kcctl 命令行改进。

本次更新的主要亮点:

  • 🔄 Kubernetes 1.36 支持:支持最新 K8s 版本
  • 🆕 Containerd v2 升级:版本新特性:Sandbox API、CDI/NRI 默认启用、User Namespaces 等重大更新
  • 🔄 Calico v3.31.5:版本新特性:eBPF 数据面安装简化、nftables GA、LRU 连接追踪等
  • 🛠️ kcctl 命令行优化:set cluster、operation、registry 等多项改进
  • 🔧 稳定性提升:修复部署失败、配置覆盖、资源泄漏等问题
  • 🧹 代码清理:移除未使用命令和冗余代码

1.1 Kubernetes 1.36 与组件升级

KubernetesCalicoContainerd
v1.36.1(默认)v3.31.5v2.2.4
v1.35.0v3.29.6v1.7.29
v1.34.2v3.29.6v1.7.29

Containerd v2:容器运行时大版本跃迁

  • CDI 默认启用:标准化 GPU、FPGA 等硬件设备注入方式,对 AI/ML 工作负载意义重大
  • User Namespaces 支持(KEP-127):容器内 root 不再映射为主机 root,从根本上提升容器安全性
  • 配置格式升级至 config.toml version=3:CRI v1alpha2 移除,仅保留 CRI v1

Calico v3.31:eBPF 数据面走向成熟

  • eBPF 安装大幅简化:通过 Installation API 参数即可一键启用,无需再手动处理 kube-proxy 和 API Service Endpoint 配置
  • nftables 数据面 GA:配合 Kubernetes 1.31+ 的 nftables kube-proxy,提供比 iptables 更好的性能和可扩展性
  • LRU 连接追踪:eBPF conntrack 采用 LRU 策略自动淘汰旧连接,高并发场景下不再轻易丢连接

1.2 kcctl 命令行优化

kcctl set cluster

新增 kcctl set cluster 命令,支持在集群创建后修改外部访问配置:

1
2
3
4
5
# 设置外部 IP
kcctl set cluster my-cluster --external-ip 10.0.0.100

# 设置外部域名
kcctl set cluster my-cluster --external-domain k8s.example.com

同时 kcctl create cluster 也新增了 --external-port--external-domain-port 参数,支持在创建集群时直接指定外部访问端口。

kcctl operation 命令

1.6.0 重写了 kcctl operation 命令,支持按集群名称查看操作记录,还加了 TUI 交互模式:

1
2
3
4
5
6
7
8
# 通过集群名称查看操作记录
kcctl operation list -c my-cluster

# TUI 模式查看集群操作日志
kcctl operation logs -c my-cluster

# 查看指定操作的详细日志
kcctl operation logs <OPERATION_ID> --follow

还有三个新子命令:

1
2
3
4
5
6
7
8
# 查看操作详情
kcctl operation describe <OPERATION_ID>

# 重试失败的操作
kcctl operation retry <OPERATION_ID>

# 终止运行中的操作
kcctl operation terminate <OPERATION_ID>

旧的 kcctl logs 命令已标记为废弃,后续版本将移除。

kcctl registry 优化

  • 配置持久化kcctl registry deploy 完成后自动将节点信息(IP、端口、SSH 凭据)保存到 ~/.kc/registry-config.yaml,后续执行 listpushdelete 等命令时无需重复指定 --node 和 SSH 参数,CLI 参数优先级高于配置文件
  • tar 格式支持kcctl registry push 支持 tar 格式的镜像包

另外清理了多个废弃命令,修复了 CLI 参数解析和错误处理等问题。

1.3 稳定性提升

这一版包含大量的稳定性修复:

  • Containerd 配置保护:更新镜像仓库认证配置时,不再覆盖整个 config.toml,而是仅更新 registry.configs.{host}.auth 部分,保留用户已有的配置(如 GPU Operator 添加的配置)
  • 过期认证清理:当 Registry 从集群中移除时,自动清理 config.toml 中对应的认证信息
  • 部署修复:修复了 kcctl deploy 在 deploy-config configmap 已存在时失败的问题,改为 CreateOrUpdate 语义
  • 资源泄漏修复:修复了 backupstore 文件句柄泄漏、监控循环中单集群失败导致整体停止等问题
  • 代码清理:移除了未使用的 kcctl-proxy 命令(约 1100 行)和多个工具包中的未使用代码(约 600 行),精简工具链

2. 安装部署 KubeClipper 1.6.0

2.1 环境要求

  • 操作系统: CentOS 7+/Ubuntu 18.04+
  • 内核版本: 4.4+
  • 内存: 至少4GB RAM
  • 存储: 至少 20GB 可用空间
  • 网络: 节点间网络互通

2.2 安装 kcctl 工具

1
2
3
4
5
# 下载最新版本的 kcctl
curl -sfL https://oss.kubeclipper.io/get-kubeclipper.sh | KC_REGION=cn bash -

# 验证安装
kcctl version

输出示例:

1
2
root@lixd-dev-3:~# kcctl version
kcctl version: version.Info{Major:"1", Minor:"6", GitVersion:"v1.6.0", GitCommit:"2561b625224a9cfd30941190bd38b828dc0ef1bb", GitTreeState:"clean", BuildDate:"2026-06-02T09:05:33Z", GoVersion:"go1.24.2", Compiler:"gc", Platform:"linux/amd64"}

2.3 部署 KubeClipper

1
2
3
4
5
# 对于 aio 环境使用 kcctl deploy 即可完成部署
kcctl deploy

# 更多参数参考 kcctl deploy -h
# kcctl deploy --server $IPADDR_SERVER --agent $IPADDR_AGENT --pk-file /root/.ssh/id_rsa --pkg $PKG --ip-detect=interface=ens3 --v 5 

看到下面的 banner 就说明部署完成了:

1
2
3
4
5
6
7
8
 _   __      _          _____ _ _
| | / /     | |        /  __ \ (_)
| |/ / _   _| |__   ___| /  \/ |_ _ __  _ __   ___ _ __
|    \| | | | '_ \ / _ \ |   | | | '_ \| '_ \ / _ \ '__|
| |\  \ |_| | |_) |  __/ \__/\ | | |_) | |_) |  __/ |
\_| \_/\__,_|_.__/ \___|\____/_|_| .__/| .__/ \___|_|
                                 | |   | |
                                 |_|   |_|

安装过程中需要去阿里云下载离线安装包,大概 1 分钟即可下载完成。

2.4 访问 Web UI

安装完成后,打开浏览器,访问 http://$IP 即可进入 KubeClipper 控制台。

kc-console-login.jpg

您可以使用默认帐号密码 admin / Thinkbig1 进行登录。

3. 快速上手体验

3.1 创建 K8s 集群

用 kcctl 创建一个集群试试:

查看当前 agent 节点

1
2
3
4
5
6
root@lixd-dev-3:~# kcctl get node
+--------------------------------------+------------+---------+----------------+-------------+-----+---------+
|                  ID                  |  HOSTNAME  | REGION  |       IP       |   OS/ARCH   | CPU |   MEM   |
+--------------------------------------+------------+---------+----------------+-------------+-----+---------+
| d6dff191-9a79-49bb-95fb-69c733c9fe7f | lixd-dev-3 | default | 172.16.131.146 | linux/amd64 |   8 | 15991Mi |
+--------------------------------------+------------+---------+----------------+-------------+-----+---------+

创建集群:

1
2
3
4
5
6
7
8
9
root@lixd-dev-3:~# kcctl create cluster --name demo --master 172.16.131.146 --untaint-master
[2026-06-02T09:47:29Z][INFO] use default containerd version 2.2.4
[2026-06-02T09:47:29Z][INFO] use default calico version v3.31.5
[2026-06-02T09:47:29Z][INFO] use default k8s version v1.36.1
+------+---------+--------------+--------------+------------+----------------------------+-------------------------------+
| NAME | REGION  | MASTER COUNT | WORKER COUNT |   STATUS   | APISERVER CERTS EXPIRATION |       CREATE TIMESTAMP        |
+------+---------+--------------+--------------+------------+----------------------------+-------------------------------+
| demo | default |            1 |            0 | Installing |                            | 2026-06-02 09:47:29 +0000 UTC |
+------+---------+--------------+--------------+------------+----------------------------+-------------------------------+

大概两分钟装完,用以下命令看实时日志:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
root@lixd-dev-3:~#  kcctl operation list -c demo
+--------------------------------------+---------+---------------+---------+---------------------------+---------------------+-------+
|                  ID                  | CLUSTER |     NAME      | STATUS  |          SPONSOR          |     CREATED AT      | STEPS |
+--------------------------------------+---------+---------------+---------+---------------------------+---------------------+-------+
| 40bee830-6ff5-4ed9-b07f-47762e0055a8 | demo    | CreateCluster | running | https-172.16.131.146-8080 | 2026-06-02 09:47:29 |    14 |
+--------------------------------------+---------+---------------+---------+---------------------------+---------------------+-------+
root@lixd-dev-3:~# kcctl operation logs -c demo
root@lixd-dev-3:~# kcctl operation logs 40bee830-6ff5-4ed9-b07f-47762e0055a8

───── Step: installRuntime (c11db224-d4bf-49a5-8fbb-4e3e8fc10490) [successful] 2026-06-02 09:47:29 ─────
  successful lixd-dev-3 (172.16.131.146) d6dff191-9a79-49bb-95fb-69c733c9fe7f [3s]
    [2026-06-02T09:47:29Z] + download from http://172.16.131.146:8081/containerd/2.2.4/amd64/manifest.json

    [2026-06-02T09:47:29Z] + download from http://172.16.131.146:8081/containerd/2.2.4/amd64/config... (truncated)

───── Step: nodeEnvSetup (f5c78839-4840-490b-a055-5d5f51f6ad4b) [successful] 2026-06-02 09:47:32 ─────
  successful lixd-dev-3 (172.16.131.146) d6dff191-9a79-49bb-95fb-69c733c9fe7f [1s]
    [2026-06-02T09:47:32Z] + /bin/bash -c
    systemctl stop firewalld || true
    systemctl disable firewalld || true
    setenforce 0
    sed -i s/^SELINUX=.*$/SELINUX=disabled/ /etc/selinux/config
    modprobe br_netfilt... (truncated)

───── Step: installExtension (97a39913-50ed-41cd-9b67-e476d57b7c7a) [successful] 2026-06-02 09:47:32 ─────
  successful lixd-dev-3 (172.16.131.146) d6dff191-9a79-49bb-95fb-69c733c9fe7f [33s]
    [2026-06-02T09:47:32Z] + download from http://172.16.131.146:8081/k8s-extension/v1/amd64/manifest.json

    [2026-06-02T09:47:32Z] + download from http://172.16.131.146:8081/k8s-extension/v1/amd64/config... (truncated)

新版还加了 TUI 日志查看器:

1
kcctl operation logs -c demo

kcctl-operation-logs-tui.png

集群装好了,用 kubectl 看一下状态:

1
2
3
4
5
6
7
8
root@lixd-dev-3:~# kubectl get cs
NAME                 STATUS    MESSAGE   ERROR
scheduler            Healthy   ok
controller-manager   Healthy   ok
etcd-0               Healthy   ok
root@lixd-dev-3:~# kubectl get node -owide
NAME         STATUS   ROLES           AGE     VERSION   INTERNAL-IP      EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION             CONTAINER-RUNTIME
lixd-dev-3   Ready    control-plane   4m16s   v1.36.1   172.16.131.146   <none>        Ubuntu 24.04.3 LTS   6.8.0-90-generic (amd64)   containerd://2.2.4

几条命令,一个单节点 K8s 集群就起来了。

3.2 工作负载体验

1.5.0 版本引入的工作负载管理功能,可以直接在 Web UI 中管理 Deployment、StatefulSet 等工作负载。

kc-console-workload3.png

4. 小结

这一版主要干了三件事:跟上 K8s 最新版本、适配 Containerd v2、把 kcctl 顺手打磨了一遍。

组件升级:

  • Kubernetes 1.36: 支持最新版本
  • Containerd v2.2.4: CDI 默认启用、User Namespaces 支持、config.toml v3
  • Calico v3.31.5: eBPF 安装简化、nftables GA、LRU 连接追踪

命令行优化:

  • kcctl set cluster: 支持集群创建后修改外部访问配置
  • kcctl operation: 新增 describe/retry/terminate 子命令和 TUI 日志查看器
  • kcctl registry: 配置持久化,避免重复输入 –node 和 SSH 参数
  • kcctl create cluster: 支持 –external-domain 指定外部域名

稳定性提升:

  • 配置保护: 更新认证时仅修改 auth 部分,保留已有 containerd 配置
  • 部署修复: 修复 configmap 已存在时的部署失败问题
  • 证书管理: 防止重复证书更新操作,修复 kubeadm v1beta4 兼容问题
  • 代码清理: 移除 kcctl-proxy 和约 1700 行冗余代码,精简工具链
0%