設定叢集以使用 OpenStack

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 執行。

後續步驟