• 云原生服务云原生服务
    • 云原生备份容灾服务hot
    • 轻量集群服务new
    • 集群巡检服务new

导入 Kubernetes 集群

介绍如何在 KubeSphere Cloud 云原生应用服务平台上导入 Kubernetes 集群。

本节介绍如何在 KubeSphere Cloud 云原生应用服务平台上导入 Kubernetes 集群。

前提条件

  • 已在 KubeSphere Cloud 云原生应用服务平台注册账户
  • 准备至少一个 Kubernetes 集群。

导入 Kubernetes 集群

  1. 使用您的账户登录 KubeSphere Cloud 云原生应用服务平台。

  2. 将光标移动到页面顶栏右侧的用户名区域,在弹出菜单中点击管理控制台

  3. 在控制台页面的左侧导航栏点击资源管理,然后点击 K8s 集群页签下的导入自建集群

    common:NOTE

    您也可以在服务概览页面点击资源管理下的添加集群 > 导入集群

  4. 在弹出的导入自建集群页面中,设置以下参数:

    参数是否必填描述
    集群名称用户自定义的集群名称,只能包含小写字母、数字和连字符(-),必须以小写字母或数字开头和结尾,最长 63 个字符。
    标识用户自定义的集群标识,用于标识此集群的用途,可从下拉列表选择以下标识:
    • 生产环境: Production
    • 开发环境: Development
    • 测试环境: Testing
    • 演示环境: Demo
    导入方式选择导入 Kubernetes 集群的方式,目前支持:
    • 直接连接 Kubernetes 集群:选择此方式后,需要填写 Kubernetes 集群的 kubeconfig 信息,并确保其中 cluster.server 字段的地址可以通过公网进行访问。
    • 代理连接 Kubernetes 集群:选择此方式后,需要在您的 Kubernetes 集群中安装代理连接组件用于导入集群。有关更多信息,请参阅(推荐)代理连接 Kubernetes 集群
    跳过 TLS 验证是否跳过 TLS 验证,勾选后将跳过 Kubernetes 服务器证书的验证。注意:此选项仅在您勾选直接连接 Kubernetes 集群后出现。勾选此项会使访问 Kubernetes 集群的 HTTPS 连接变得不安全。
    若您确定填写的 kubeconfig 信息中 cluster.server 字段的地址可以通过公网进行访问,但点击检查连接仍无法成功连接至集群,请勾选此项后再次尝试。
  5. 参数设置完成后,点击检查连接,如果集群连接成功,点击导入。集群导入成功后,会显示在集群列表中。

    common:NOTE

    • 根据集群的部署环境,您可能需要配置端口转发规则并在安全组中放行相关端口。如果点击检查连接后始终提示集群连接出错,请参阅获取 Kubeconfig

    • 集群导入成功后,会自动在集群上创建名为 qiming-backend 的命名空间并安装备份容灾服务组件。

(推荐)代理连接 Kubernetes 集群

若要使用代理连接 Kubernetes 集群的方式来导入您的 Kubernetes 集群,请执行以下步骤:

  1. 使用您的账户登录 KubeSphere Cloud 云原生应用服务平台。

  2. 将光标移动到页面顶栏右侧的用户名区域,在弹出菜单中点击管理控制台

  3. 在控制台页面的左侧导航栏点击资源管理,然后点击 K8s 集群页签下的导入自建集群

  4. 集群基础信息区域,设置集群名称与标识,将导入方式选择为代理连接 Kubernetes 集群,可以看到系统自动生成了一条命令以安装代理连接组件。

  5. 复制该命令,并在 Kubernetes 集群的主节点上执行该命令。

    common:NOTE

    • 如果您的网络访问受限,需要开放域名 kubesphere.cloudtower.kubesphere.cloud 以及端口 80443

    • 不同的用户所使用的安装命令均有所差异,请以页面上显示的命令为准。

  6. 点击已确认安装代理连接组件,等待建立代理连接。

  7. 建立代理连接后,页面会自动跳转至该集群的详情页面。

  8. (可选)若页面提示代理连接出错,稍等片刻后,页面会自动跳转至该集群的详情页面。请点击操作指引,参考页面提示信息,按照以下步骤进行排查。

    • 步骤一:

      1. 在安装代理连接组件的节点上执行以下命令,检查组件是否正常运行,回显信息中 READYAVAILABLE 栏应分别显示为 1/11

        kubectl get deploy cluster-agent -n kubesphere-cloud-system

      2. 若代理连接组件未正常运行,请执行以下命令,查看组件日志,根据回显信息进行进一步排查。

        kubectl logs -l app=agent -n kubesphere-cloud-system

    • 步骤二:

      1. 若代理连接组件始终无法正常运行,请执行页面上显示的卸载命令将已安装的组件卸载。

      2. 请重新执行页面上显示的安装命令,再次安装代理连接组件。

      3. 成功安装组件后,点击已重新连接尝试建立代理连接。

获取 Kubeconfig

托管 Kubernetes 集群

若您使用云厂商提供的托管 Kubernetes 集群服务,请使用云厂商提供的可供公网访问的 kubeconfig 来导入您的集群。例如:

  • 若您使用阿里云提供的容器服务 ACK:
    • 请确保您在集群参数中开启 API Server 访问下的使用 EIP 暴露 API Server。更多信息请参阅阿里云产品文档
    • 在集群控制台页面,前往集群详情页,点击连接信息页签,复制公网访问选项卡下面的 kubeconfig。更多信息请参阅阿里云产品文档
  • 若您使用华为云提供的云容器引擎 CCE:
    • 请确保您在集群详情页面的公网 apiserver 地址中已绑定弹性 IP,然后在 kubectl 页签中下载 kubectl。更多信息请参阅华为云产品文档
  • 若您使用腾讯云提供的容器服务 TKE:
    • 请在您的集群详情页中选择基本信息,确保在集群 APIServer 信息下开启外网访问,然后复制或下载 kubeconfig。更多信息请参阅腾讯云产品文档

自建 Kubernetes 集群

若您使用自建的 Kubernetes 集群,请在集群主节点上执行 cat $HOME/.kube/config 命令获取 kubeconfig 用于导入集群。请确保 kubeconfig 中 cluster.server 字段的地址可以通过公网进行访问,或者同时勾选跳过 TLS 验证进行导入。

若通过上述方法均无法成功导入集群,请按照以下步骤重新获取 kubeconfig:

  1. 在您 Kubernetes 集群的所有主节点上,前往 /etc/kubernetes/pki/ 目录,使用模板脚本文件的内容新建一个脚本文件。

  2. 执行以下命令为新建的脚本文件添加可执行权限:

    chmod +x <脚本文件名>
  3. 在集群所有主节点上执行以下命令,运行新建的脚本文件:

    ./<脚本文件名> <公网 IP 地址>
  4. 将集群主节点的私网 IP 地址和端口映射到公网 IP 地址和端口。

  5. 在集群主节点上执行以下命令获取 kubeconfig:

    cat $HOME/.kube/config
  6. 将 kubeconfig 的 cluster.server 字段中的私网 IP 地址和端口更改为公网 IP 地址和端口,然后使用更改后的 kubeconfig 导入集群。

尚未安装 Kubernetes 集群

  1. 执行以下命令下载最新版 KubeKey:

    curl -sfL https://get-kk.kubesphere.io | VERSION=v2.2.2 sh -

    common:NOTE

  2. 执行以下命令创建示例配置文件并参阅编辑配置文件来编辑您的集群配置文件:

    ./kk create config [--with-kubernetes version] [(-f | --file) path]
  3. 在集群配置文件(例如,config-sample.yaml)中的 spec.kubernetes 字段添加以下内容:

    apiserverCertExtraSans: <[公网 IP 地址]>

    common:NOTE

    注意在行首缩进 2 个空格。

  4. 执行以下命令创建集群:

    ./kk create cluster -f config-sample.yaml

    common:NOTE

    请将 config-sample.yaml 替换为您的集群配置文件名。

  5. 将集群主节点的私网 IP 地址和端口映射到公网 IP 地址和端口。

  6. 在集群主节点上执行以下命令获取 kubeconfig:

    cat $HOME/.kube/config
  7. 将 kubeconfig 的 cluster.server 字段中的私网 IP 地址和端口更改为公网 IP 地址和端口,然后使用更改后的 kubeconfig 导入集群。