GKE on Bare Metal 支持 OpenStack Kubernetes Cloud Provider。使用此功能可自动将 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
运行(如果您为此节点指定了该项)。