将集群配置为使用 OpenStack

适用于 Bare Metal 的 GDCV 支持 OpenStack Kubernetes Cloud 提供商。使用此功能可自动将 OpenStack 负载平衡预配为 Service (LBaaS) 资源。这些资源可以替换 MetaLB 资源,以便将在 Anthos on Bare Metal 集群上运行的服务轻松公开给其他 OpenStack 租户或 OpenStack 网络外部。

准备工作

确定需要使用 OpenStack LBaaS 资源的 Anthos 集群。

确保您有权访问要配置的机器。

在 Kubernetes 文档中详细了解如何运行 cloud-controller-manager

更改集群的配置文件

OpenStack Kubernetes 云提供商要求 kubelet 在所有具有以下参数的节点上运行:

cloud-provider: "external"

为确保您的 Anthos 集群轻松满足此要求,请在初始化集群内之前将 baremetal.cluster.gke.io/external-cloud-provider: "true" 注解添加到集群配置文件中的元数据部分下。

配置文件中的条目应类似于如下示例:

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: cluster1
  namespace: cluster-cluster1
  annotations:
    baremetal.cluster.gke.io/external-cloud-provider: "true"
spec:
  ..

其他云平台上的一些云服务提供商要求使用特殊的 providerID 格式,因此 GKE on Bare Metal 会为每台机器生成一个 providerID。格式为 baremetal://MACHINE_ADDRESS。如果您想要使用其他 providerID,则可以为每个节点单独进行指定,并指定一个 IP 地址。配置将如下所示:

 apiVersion: baremetal.cluster.gke.io/v1
 kind: Cluster
 metadata:
   name: cluster1
   namespace: cluster-cluster1
 spec:
   clusterNetwork:
     pods:
       cidrBlocks:
       - 192.168.0.0/16
     services:
       cidrBlocks:
       - 10.96.0.0/20
   controlPlane:
     nodePoolSpec:
       nodes:
       - address: 10.200.0.1
+        providerID: some-prefix://unique-string
       - address: 10.200.0.2
+        providerID: some-prefix2://unique-string2
  ...

---
 apiVersion: baremetal.cluster.gke.io/v1
 kind: NodePool
 metadata:
   name: nodepool1
   namespace: cluster-admin1
 spec:
   clusterName: admin1
   nodes:
   - address: 172.18.0.2
+    providerID: some-prefix3://unique-string3

修改配置文件后,使用以下命令初始化集群:

bmctl create cluster -c cluster1

现在,cluster1 中的所有节点均使用所需的参数 cloud-provider: "external" 运行

所有节点的配置文件中都添加了以下字段:

taints:
- effect: NoSchedule
  key: node.cloudprovider.kubernetes.io/uninitialized
  value: "true"

在此集群中初始化云服务商后,这些字段会被移除。

kubelet 将使用您提供的 providerID 运行(如果您为此节点指定了该项)。