导入标准 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"
  • 要使用 external 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. 在左侧导航中,进入 Cluster Management > Clusters

  2. 单击 Import Cluster

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

    参数描述
    Registry存储所需平台组件镜像的 Registry。可选项:Platform Default(在 global 初始化期间配置)、Private Registry(需要地址、端口、用户名、密码)、Public Registry(需要 更新云凭证)。
    Cluster Info可手动输入,或从 KubeConfig 文件中解析。必填字段:Cluster AddressCA Certificate(如果手动输入,则需进行 Base64 解码)以及 Authentication(具有 cluster-admin 权限的 token 或客户端证书)。
  4. 单击 Check Connectivity。平台将验证网络访问并自动检测集群类型。

  5. 如果成功,单击 Import 完成导入。

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

网络配置

请确保 global 集群与导入的集群之间的连通性。

导入后配置

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

常见问题

为什么 “Add Node” 按钮是禁用状态?

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

支持哪些证书?

  1. Kubernetes Certificates:仅可查看 API Server 证书;不支持其他证书,且不会自动轮转。
  2. Platform Component Certificates:可查看并自动轮转。

不支持哪些功能?

  • Provider-managed Kubernetes services:不提供审计日志。
  • Provider-managed Kubernetes services:不支持 ETCD、Scheduler 和 Controller Manager 监控,仅提供 API Server 指标。
  • All clusters:不支持 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