导入标准 Kubernetes 集群

使用此操作步骤将现有的标准 Kubernetes 集群(例如使用 kubeadm 部署的集群)作为第三方集群导入。

术语

术语描述
Provider-managed Kubernetes service由提供商管理控制平面节点和控制平面组件的 Kubernetes 服务。用户通常无法登录控制平面节点,也无法直接维护这些节点。
Self-managed Kubernetes cluster由集群所有者维护控制平面节点和集群组件的 Kubernetes 集群。

前提条件

注意事项

默认情况下,平台会监控与 eth.*|en.*|wl.*|ww.* 匹配的 NIC 流量。如果您的 NIC 使用不同的命名约定,请按照从自定义命名的网卡收集网络数据中的说明,在集成后更新配置。

获取 Registry 地址

  • 若要使用平台在安装 global 集群期间部署的 Registry,请在 global 控制平面节点上运行以下命令:

    if [ "$(kubectl get productbase -o jsonpath='{.items[].spec.registry.preferPlatformURL}')" = 'false' ]; then
        REGISTRY=$(kubectl get cm -n kube-public global-info -o jsonpath='{.data.registryAddress}')
    else
        REGISTRY=$(kubectl get cm -n kube-public global-info -o jsonpath='{.data.platformURL}' | awk -F // '{print $NF}')
    fi
    echo "Registry address: $REGISTRY"
  • 若要使用外部 Registry,请手动设置 REGISTRY:

    REGISTRY=<external-registry-address>  # e.g., registry.example.cn:60080 or 192.168.134.43
    echo "Registry address: $REGISTRY"

检查是否需要额外的 Registry 配置

  1. 运行以下命令,检查 Registry 是否支持使用受信任 CA 证书的 HTTPS:

    REGISTRY=<registry-address-from-previous-step>
    
    if curl -s -o /dev/null --retry 3 --retry-delay 5 -- "https://${REGISTRY}/v2/"; then
        echo 'Pass: Registry uses a trusted CA certificate. No extra config needed.'
    else
        echo 'Fail: Registry does not support HTTPS or uses an untrusted certificate. Follow "Trust Insecure Registry".'
    fi
  2. 如果检查失败,请参阅如何信任不安全的 Registry?

获取集群信息

请参阅如何获取集群信息?。

集成集群

  1. 在左侧导航栏中,转到 集群管理 > 集群。

  2. 单击 导入集群。

  3. 按如下所示配置参数:

    参数描述
    Registry存储平台所需组件镜像的 Registry。选项包括:平台默认(在 global 设置期间配置)、私有 Registry(需要地址、端口、用户名和密码)以及公共 Registry(需要更新云凭证)。
    集群信息可以手动输入,也可以从 KubeConfig 文件解析。必填字段包括:集群地址、CA 证书(手动输入时需进行 Base64 解码)和身份验证(具有 cluster-admin 权限的令牌或客户端证书)。
  4. 单击 检查连接。平台会验证网络访问并自动检测集群类型。

  5. 如果成功,请单击 导入 完成操作。

    可以通过执行进度对话框(status.conditions)查看进度。集成后,该集群会在列表中显示为健康状态。

网络配置

确保 global 集群与导入的集群之间可以连通。

导入后配置

如果需要平台从导入的标准 Kubernetes 集群收集审计数据,请在导入后为该集群配置 Kubernetes API server 审计日志记录。请参阅如何为导入的标准 Kubernetes 集群配置审计数据收集?。

常见问题

为什么“添加节点”按钮处于禁用状态?

平台 UI 不支持为导入的标准 Kubernetes 集群添加节点。请直接在目标集群中或通过集群提供商添加节点。

支持哪些证书?

  1. Kubernetes 证书:只能查看 API Server 证书;不支持其他证书,也不会自动轮换。
  2. 平台组件证书:可以查看并自动轮换。

哪些功能不受支持?

  • 由提供商管理的 Kubernetes 服务:无法获取审计日志。
  • 由提供商管理的 Kubernetes 服务:不支持监控 ETCD、Scheduler 和 Controller Manager。仅提供 API Server 指标。
  • 所有集群:不支持 API Server 以外的证书。

如何修复 Containerd 运行时导致的分布式存储部署失败?

使用 Containerd 时,除非调整所有节点上的 Containerd 设置,否则分布式存储部署会失败:

  1. 编辑 /etc/systemd/system/containerd.service,设置 LimitNOFILE=1048576。
  2. 运行 systemctl daemon-reload。
  3. 重启 Containerd:systemctl restart containerd。
  4. 在控制平面节点上,重启分布式存储 Pod:
    kubectl delete pod --all -n rook-ceph