Google Distributed Cloud 支持将 OpenStack 用作私有云平台。本指南介绍了如何将 Google Distributed Cloud 集群配置为与外部云服务提供商搭配使用。在 OpenStack 上运行 Google Distributed Cloud 集群可让您使用以下 OpenStack 服务:
基础架构即服务 (IaaS)
负载均衡即服务 (LBaaS)
存储
将集群配置为与 OpenStack 搭配使用包括以下过程:
创建集群时,您需要添加
baremetal.cluster.gke.io/external-cloud-provider
注解此注解会使 Google Distributed Cloud 添加 kubelet 标志
cloud-provider=external
然后,kubelet 会向集群节点添加
node.cloudprovider.kubernetes.io/uninitialized:NoSchedule
污点
此配置可让您和 OpenStack 拥有节点 init 进程。例如,您可以在 OpenStack 上部署 Google Distributed Cloud,以自动预配 OpenStack 负载均衡即服务 (LBaaS) 资源或利用其他 OpenStack 功能。LBaaS 资源可以替换 MetalLB 资源,以便将在 Google Distributed Cloud 集群上运行的服务公开给其他 OpenStack 租户或 OpenStack 网络外部。如需详细了解 OpenStack 的功能和优势,请参阅 OpenStack 文档。
相关示例
本文档仅介绍了如何将集群配置为与 OpenStack 搭配使用。以下指南将引导您完成部署示例:
在 OpenStack 上部署 Google Distributed Cloud 集群引导您完成在 OpenStack 虚拟机 (VM) 上部署 Google Distributed Cloud 混合集群的示例。该部署使用脚本来简化安装。本指南还介绍了一种启用负载均衡即服务 (LBaaS) 的方式。
配置适用于 Kubernetes 的 OpenStack Cloud Provider 介绍了如何在 OpenStack 上部署的 Google Distributed Cloud 集群上安装 OpenStack Cloud Provider。将 Google Distributed Cloud 与 OpenStack 搭配使用不需要 OpenStack Cloud Provider。
准备工作
确定哪些 GKE 集群需要使用 OpenStack LBaaS 资源。
创建集群后,如果集群配置为使用 OpenStack LBaaS 资源,则无法更改配置来改用 MetalLB 资源。请确保使用正确的云服务提供商配置来初始化集群。
确保您有权访问要尝试配置的机器。
如需详细了解如何运行 cloud-controller-manager,请参阅 Kubernetes 文档。
更改集群配置文件
OpenStack Kubernetes 云提供商要求 kubelet
在所有具有以下参数的节点上运行:
cloud-provider: "external"
为确保 GKE 集群满足此要求,请在创建集群之前将 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
格式。Google Distributed Cloud 会为每个节点机器生成一个 providerID
,格式为 baremetal://MACHINE_ADDRESS
。如果您想要使用其他 providerID
,则可以为每个节点单独进行指定,并指定 IP 地址。
以下示例集群配置文件展示了如何为集群节点指定 providerID
:
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-cluster1
spec:
clusterName: cluster1
nodes:
- address: 172.18.0.2
+ providerID: some-prefix3://unique-string3
创建您的集群
修改配置文件后,使用以下命令初始化集群:
bmctl create cluster -c cluster1
如需详细了解如何创建集群,请参阅集群创建概览。
节点配置
创建为 OpenStack 配置的集群时,集群节点会发生以下变化:
cluster1
中的所有节点均使用必需的参数cloud-provider: "external"
运行。所有节点的配置文件中都添加了以下污点:
taints: - effect: NoSchedule key: node.cloudprovider.kubernetes.io/uninitialized value: "true"
在此集群中初始化云服务提供商后,这些污点会被移除。
kubelet
使用您在集群配置文件中指定的providerID
运行。