1. 部署多集群管理工具

任务说明

在本地环境部署一个多集群管理工具,用于统一管理多个 Kubernetes 集群。本案例选择 KubeSphere 作为管理平面,通过其多集群管理功能接入至少两个目标集群(一个作为管理集群,一个作为成员集群),实现从单一控制台查看和操作多个集群。

环境准备

  • Linux 主机(本文以 Ubuntu 22.04 为例),建议 4 核 8G 以上
  • 已安装 Docker(20.10+)和 Helm(3.5+)
  • 两个可用的 Kubernetes 集群(版本 1.20~1.26),可通过 kubeconfig 访问
  • 集群间网络互通(管理集群需能访问成员集群的 API Server)

部署 KubeSphere 管理集群

在第一个集群(作为管理集群)上执行以下命令安装 KubeSphere 最小化实例(仅启用多集群管理组件):

# 创建命名空间并安装 KubeSphere
kubectl create namespace kubesphere-system
kubectl create namespace kubesphere-monitoring-system

# 使用 Helm 安装 KubeSphere 核心组件
helm repo add kubesphere https://kubesphere.github.io/kubesphere/
helm repo update
helm install ks-core kubesphere/ks-core --namespace kubesphere-system --set multcluster.enabled=true --set console.enableNodePort=true

等待 Pod 就绪:

kubectl get pods -n kubesphere-system -w
# 等待所有 Pod 处于 Running 状态后,获取控制台访问地址
kubectl get svc -n kubesphere-system ks-console -o jsonpath='{.spec.ports[0].nodePort}'
# 默认账号:admin / 初始密码:P@88w0rd(首次登录后需修改)

接入成员集群

在管理集群上生成成员集群的接入令牌,然后在第二个集群(成员集群)上执行导入操作:

# 1. 在管理集群上获取集群令牌(登录 KubeSphere Web 控制台后执行)
# 路径:平台管理 → 集群管理 → 添加集群 → 选择"集群连接"方式
# 复制生成的导入命令(包含 agent 部署 YAML)

# 2. 在成员集群上执行导入命令(示例,实际以控制台生成的命令为准)
kubectl apply -f - <<EOF
apiVersion: v1
kind: Namespace
metadata:
  name: kubesphere-system
---
apiVersion: v1
kind: Secret
metadata:
  name: kubesphere-agent-secret
  namespace: kubesphere-system
type: Opaque
stringData:
  : "<从管理集群获取的>"
EOF

# 3. 部署 agent 组件(实际命令由管理集群控制台动态生成)
kubectl apply -f https://raw.githubusercontent.com/kubesphere/ks-core/master/config/agent.yaml

在管理集群控制台的集群管理页面中,等待成员集群状态变为 Ready,即完成接入。

验证方法

  1. 访问 KubeSphere 控制台(http://<管理集群节点IP>:<NodePort>),使用 admin 账号登录
  2. 进入 平台管理 → 集群管理,应能看到两个集群条目,状态均为 Ready
  3. 点击成员集群名称,进入该集群的 工作负载 页面,查看任意命名空间下的 Pod 列表,确认数据已从成员集群同步
  4. 在成员集群上创建一个测试命名空间(如 kubectl create ns test-from-console),回到 KubeSphere 控制台刷新,确认新命名空间可见

通过条件:上述 4 项检查全部通过,即证明多集群管理工具部署成功且具备跨集群管理能力。

常见问题

  • 成员集群状态一直为 "Join 中":检查管理集群与成员集群之间的网络连通性(telnet <成员集群APIServer地址> 6443),并确认 agent Pod 日志无报错
  • 控制台无法访问:确认 NodePort 已暴露,且防火墙放行对应端口
  • 版本不兼容:KubeSphere 3.4+ 要求 Kubernetes 1.20~1.26,超出范围需先升级集群
管理集群 KubeSphere 控制台 (ks-core + ks-console) 集群代理 (Agent) 端口: 443/TCP 成员集群 Kubernetes API Server kube-apiserver Agent 组件 负责与管理集群通信 HTTPS (双向 TLS) 管理员浏览器访问 可接入多个成员集群 (本案例接入 1 个)