注册资源

注册库存机器

为了使 Platform Admin 能够创建用户集群,Anthos 需要一个空闲的机器池。在本部分中,您将库存机器注册到 Anthos 管理员集群,以便 Platform Admin 可以在稍后使用它们创建用户集群。这些机器必须满足与管理员集群节点相同的要求。

kubectl apply -f <path/to/example-machine.yaml> --kubeconfig=${ADMIN_KUBECONFIG}

例如:

apiVersion: baremetal.cluster.gke.io/v1alpha1
kind: InventoryMachine
metadata:
  name: <ip address of the machine. e.g., 10.200.0.10>
  labels:
    "mykey": "myvalue"
    "rack": "r1020"
spec:
  address: <ip address of the machine. e.g., 10.200.0.10>

labels 是附加到资源的自由格式键值对。您后续可以在管理中心使用这些标签过滤机器。例如,您可以使用标签来标识机架位置、特殊硬件配置等。

[可选] 将不同的 SSH 密钥用于库存机器

默认情况下,Anthos 不公开模式使用 sshPrivateKeyPath(用于访问管理员集群的机器)提供的 ssh-key 来访问这些库存机器。为了更好地让管理员集群机器和库存机器(用于用户集群)隔离,可将不同的 SSH 密钥用于库存机器。 您应该先在需要用户集群之前创建此类集群。

  1. 将 SSH 公钥分发给所有库存机器。

  2. 将 SSH 私钥作为 Secret 存储在管理员集群中,例如 user-cluster-ssh-key

    kubectl create secret generic user-cluster-ssh-key -n anthos-creds --kubeconfig=${ADMIN_KUBECONFIG} \
      --from-file=id_rsa=/path/to/KEYPAIR_PRIVATE_KEY_FILENAME
    
  3. 创建用户集群时,请在命名空间 anthos-creds 下指定在第 1 步(即 user-cluster-ssh-key)中创建的 Secret。

    仅在通过 API 创建集群时支持此操作。在用户集群 yaml 文件内的集群定义中将 SSH 密钥添加为 sshKeySecret 并指定 imagePullSecret,例如:

      apiVersion: baremetal.cluster.gke.io/v1
      kind: Cluster
      metadata:
        name: <cluster-name>
        namespace: cluster-<cluster-name>
      spec:
        type: user
        credentials:
          sshKeySecret:
            name: user-cluster-ssh-key
            namespace: anthos-creds
          ....
        nodeAccess:
          loginUser: <login user name>
          ....
    

注册 VIP 地址池

为了让 Platform Admin 能创建除 InventoryMachines 以外的用户集群,Anthos 需要一个包含所有可用虚拟 IP 地址的池。管理中心界面使用它来告诉 Platform Admin 哪些虚拟 IP 可用,并在用户集群创建期间验证 VIP 的可用性。

在本部分中,您将向 Anthos 管理员集群注册 AddressPool,以便稍后用于创建用户集群。您需要使用 anthos-addresspool-default 名称创建一个且仅一个地址池。每个用户集群都将强制使用此地址池中的 VIP,并且不能重复使用同一 VIP 范围。虚拟 IP 必须满足与管理员集群相同的 VIP 要求,且不应与节点的 IP 重叠。通过说明字段,您可以在界面中添加一些其他说明。

kubectl apply -f <path/to/example-addresspool.yaml> --kubeconfig=${ADMIN_KUBECONFIG}

例如:

apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1
kind: AddressPool
metadata:
  name: anthos-addresspool-default
spec:
  description: <description text>
  addresses:
  - <vip address pool. e.g, 10.200.0.100-10.200.0.200>

注册 Bootstrap Service

Bootstrap Service 是一个机制,用于在用户集群上预装存储服务和 GPU 驱动程序等其他资源(在创建它们之后),以便这些资源立即可用。您应该在要使用这些集群的用户集群之前创建 Bootstrap Service。

  1. 用途

    kubectl create configmap <configmap-name> --kubeconfig=${ADMIN_KUBECONFIG} \
      --from-file=<path/to/manifests> --namespace=anthos-management-center
    

    创建 configmap,其中包含启动服务所需的所有清单

  2. 创建引用 configmap 的 Bootstra Service 对象

    apiVersion: managementcenter.anthos.cloud.google.com/v1alpha1
    kind: BootstrapService
    metadata:
      name: <bootstrap-service-name>
      namespace: anthos-management-center
    spec:
      # If set to True, this configuration can be applied to many user clusters,
      # e.g. a GPU driver configuration. If False, this configuration can only be
      # applied to a single user cluster, e.g. a CSI Driver + StorageClass
      # combination which is intended for exclusive use by a single user cluster.
      # Defaults to False.
      isReusable: False
      configMapRef:
        name: <configmap-name>
        namespace: anthos-management-center
    
  3. 如果需要更多 Bootstra Service,请重复上述步骤。