适用于 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
运行(如果您为此节点指定了该项)。