Google Distributed Cloud 軟體僅支援使用 OpenStack 做為私有雲平台。本指南說明如何設定叢集,以便與外部雲端服務供應商搭配使用。在 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
taint 新增至叢集節點
這個設定可讓您和 OpenStack 擁有節點初始化程序。舉例來說,您可以在 OpenStack 上部署 Google Distributed Cloud 軟體,自動佈建 OpenStack 負載平衡即服務 (LBaaS) 資源,或使用其他 OpenStack 功能。LBaaS 資源可取代 MetalLB 資源,將叢集上執行的服務公開給其他 OpenStack 租戶或 OpenStack 網路外部。如要進一步瞭解 OpenStack 功能和優點,請參閱 OpenStack 說明文件。
相關範例
本文僅說明如何設定叢集以搭配 OpenStack 使用。下列指南將逐步說明部署範例:
在 OpenStack 上部署叢集:逐步說明如何在 OpenStack 虛擬機器 (VM) 上部署混合式叢集。部署作業會使用指令碼簡化安裝程序。本指南也會說明如何以服務 (LBaaS) 形式啟用負載平衡。
設定 Kubernetes 的 OpenStack 雲端服務供應商一文說明如何將 OpenStack 雲端服務供應商安裝在 OpenStack 上部署的叢集。使用 OpenStack 搭配 Google Distributed Cloud 軟體時,不需要 OpenStack 雲端服務供應商。
事前準備
決定哪些叢集需要使用 OpenStack LBaaS 資源。
建立叢集並設定使用 OpenStack LBaaS 資源後,就無法變更設定來改用 MetalLB 資源。請務必使用正確的雲端供應商設定初始化叢集。
確認您有權存取要設定的機器。
如要進一步瞭解如何執行 cloud-controller-manager,請參閱 Kubernetes 說明文件。
變更叢集設定檔
OpenStack Kubernetes 雲端服務供應商要求 kubelet
在所有節點上執行,並使用下列引數:
cloud-provider: "external"
為確保叢集符合這項規定,請在建立叢集前,將 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
,可以為每個節點指定一個 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
執行。