您可以在资产中心将K8s自建集群接入云安全中心进行统一管理。本文介绍如何接入K8s自建集群。

版本限制

仅旗舰版支持该功能,其他版本用户需要升级到旗舰版才可使用该功能。购买和升级云安全中心服务的具体操作,请参见购买云安全中心升级与降配。各版本的功能详情,请参见功能特性

限制条件

  • 您最多可接入10个K8s自建集群。
  • 自建K8s集群网络类型为VPC时,仅支持接入华东1(杭州)、华北2(北京)、华东2(上海)、华南1(深圳)和中国香港地域。
    说明 自建K8s集群网络类型为公网时,无地域限制。

接入K8s自建集群

如果您的K8s集群是通过混合云的方式部署,且公网不可直接访问,那么您需要先进行网络配置,确保网络连通后再进行集群接入。配置流量转发规则具体操作,请参见接入非阿里云自建集群的网络配置
  1. 登录云安全中心控制台在左侧导航栏单击资产中心
  2. 资产中心页面,单击容器页签,然后单击集群页签。
  3. 集群页签,单击自建集群接入
  4. 自建集群接入面板,单击自建集群接入,配置要接入的K8s自建集群的相关信息,然后单击确定
    参数 说明
    集群名称 输入自建K8s集群的名称。名称可包含大小写字母、数字和下划线(_)、短划线(-)。
    自建K8s集群版本 选择自建K8s集群的版本。
    集群所在地域 选择自建K8s集群所在的地域。
    网络类型 选择自建K8s集群的网络类型。
    集群所在VPC 选择自建K8s集群所在VPC。
    ApiServerIp 输入自建K8s集群API Server的地址。
    K8s配置信息 上传K8s配置文件。您需要在服务器上生成K8s配置文件后,才能上传该配置文件。生成K8s配置文件的具体操作,请参见生成K8s配置文件
    完成K8s自建集群接入后,您可以在自建集群管理面板查看已接入集群的信息。

生成K8s配置文件

在生成K8s配置文件前,您的服务器需要满足以下前提条件:
  • 已在服务器上搭建K8s集群。具体操作,请参见从零搭建K8s集群
  • 已安装Docker。具体操作,请参见安装Docker
  • 如果您的集群设置了访问控制策略,请确保已将容器所在地域的地址池IP加入到了访问控制的白名单中。
    地域 公网IP 私网IP
    华东1(杭州) 121.41.35.192、121.41.39.7、121.41.39.39、121.41.39.153、121.41.38.32 100.104.177.0/26
    华东2(上海) 47.103.62.83、47.103.60.134、47.103.58.177、47.103.54.252、47.103.49.93 100.104.7.192/26
    华北1(青岛) 47.104.111.68 100.104.87.192/26
    华北2(北京) 123.57.55.56、123.57.55.21、123.57.55.18、123.57.55.7、123.57.55.6 100.104.20.128/26
    华北3(张家口) 39.99.229.195 100.104.187.64/26
    华北5(呼和浩特) 39.104.147.68 100.104.36.0/26
    华南1(深圳) 47.106.245.198、47.107.237.185、47.107.237.182、47.107.237.170、47.107.237.152 100.104.9.192/26
    中国香港(香港) 47.106.245.198、47.107.237.185、47.107.237.182、47.107.237.170、47.107.237.152 100.104.111.128/26
    亚太东北1(东京) 47.74.24.20 100.104.69.0/26
    亚太东南1(新加坡) 47.74.238.176、47.74.238.61、47.74.237.201、47.74.237.166、47.74.237.91 100.104.41.128/26
    美国西部1(硅谷) 47.254.39.224 100.104.145.64/26
    美国东部1(弗吉尼亚) 47.252.4.238 100.104.36.0/26
    德国(法兰克福) 47.254.158.71 172.16.0.0/20
    英国(伦敦) 8.208.14.12 172.16.0.0/20
    印度尼西亚(雅加达) 149.129.238.99 100.104.193.128/26
  1. 使用root用户登录K8s集群所在服务器。
  2. 创建用户。
    1. 执行以下命令创建ClusterRole。
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRole
      metadata:
          name: ${userName}-cluster-reader
      rules:
      - apiGroups:
        - ""
        resources:
        - "*"
        verbs:
        - get
        - list
        - watch
    2. 执行以下命令创建ClusterRoleBinding。
      注意 执行本步骤及以下所有步骤中的命令时,您需要将<UserName>替换成您的用户名称。
      apiVersion: rbac.authorization.k8s.io/v1beta1
      kind: ClusterRoleBinding
      metadata:
          name: ${userName}-read-all
      roleRef:
          apiGroup: rbac.authorization.k8s.io
          kind: ClusterRole
          name: ${userName}-cluster-reader
      subjects:
      - apiGroup: rbac.authorization.k8s.io
        kind: User
        name: ${userName}
    更多信息,请参见K8s集群创建用户账号
  3. 创建证书。
    1. 执行以下命令创建User私钥。
      openssl genrsa -out <UserName>.key 2048
    2. 执行以下命令创建证书签署请求。
      openssl req -new -key <UserName>.key -out <UserName>.csr -subj "/O=K8s/CN=<UserName>"
    3. 执行以下命令签署证书。
      openssl x509 -req -in <UserName>.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out <UserName>.crt -days 365
  4. 创建集群配置文件。
    1. 执行以下命令创建集群配置。
      kubectl config set-cluster k8s --server=
      https://192.168.XX.XX:6443 --certificate-authority=ca.crt --embed-certs=true --kubeconfig=/root/<UserName>.conf
    2. 执行以下命令创建用户配置。
      kubectl config set-credentials <UserName> --client-certificate=<UserName>.crt --client-key=<UserName>.key --embed-certs=true --kubeconfig=/root/<UserName>.conf
    3. 执行以下命令创建context配置。
      kubectl config set-context <UserName>@<ClusterName> --cluster=k8s --user=<UserName> --kubeconfig=/root/<UserName>.conf
      注意 执行本步骤及以下所有步骤中的命令时,您需要将<ClusterName>替换成您的集群名称。
    4. 执行以下命令切换context。
      kubectl config use-context <UserName>@<ClusterName> --kubeconfig=/root/<UserName>.conf
    5. 执行以下命令查看config文件。
      kubectl config view --kubeconfig=/root/<UserName>.conf
  5. 执行以下命令验证kubeconfig文件是否可用。
    mkdir -p /home/<UserName>/.kube
    cp <UserName>.conf /home/<UserName>/.kube/config
    kubectl get pod -n kube-system

    上述命令执行完成后,如果命令窗口可以正常显示Pod的信息,说明云安全中心可以访问该集群,即生成的kubeconfig文件是可用的。否则说明kubeconfig文件不可用。

接入非阿里云自建集群的网络配置

如果您的K8s集群是通过混合云的方式部署,且公网不可直接访问,那么您需要先进行网络配置,确保网络连通后再进行集群接入。

  1. 指定一台ECS服务器,将其访问流量转发到第三方K8s集群API Server所在的IDC服务器上。

    示例

    将执行转发任务的ECS服务器10.0.XX.XX中A端口的流量,转发至第三方K8s集群API Server所在的IDC服务器192.168.XX.XX的B端口。
    • CentOS 7命令:
      • 使用firewallcmd:
        firewall-cmd --permanent --add-forward-port=port=<A端口>:proto=tcp:toaddr=<192.168.XX.XX>:toport=<B端口>
      • 使用iptables:
        1. 开启端口转发。
          # echo "1" > /proc/sys/net/ipv4/ip_forward                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
        2. 设置端口转发。
          # iptables -t nat -A PREROUTING -p tcp --dport <A端口> -j DNAT --to-destination <192.168.XX.XX>:<B端口>
    • Windows命令:
      netsh interface portproxy add v4tov4 listenport=<端口A> listenaddress=* connectaddress=<192.168.XX.XX> connectport=<端口B> protocol=tcp
  2. 在云安全中心将ECS服务器10.0.XX.XX以VPC的方式接入自建集群。