設定叢集以使用 OpenStack

在 OpenStack 上執行 Google Distributed Cloud 軟體 (僅限裸機),即可將叢集與 OpenStack 基礎架構即服務 (IaaS)、負載平衡即服務 (LBaaS) 和儲存空間整合。為外部雲端服務供應商設定叢集,會將節點初始化程序委派給 OpenStack。

您可以自動佈建 OpenStack LBaaS 資源 (而非 MetalLB),將叢集上執行的 Service 公開給其他 OpenStack 租戶或 OpenStack 網路外部。如要進一步瞭解 OpenStack 的功能和優點,請參閱 OpenStack 說明文件。

本文僅說明如何設定叢集,以便與 OpenStack 搭配使用。下列指南將逐步引導您完成部署範例:

  • 在 OpenStack 上部署叢集:逐步引導您在 OpenStack 虛擬機器 (VM) 上部署混合式叢集範例。部署作業會使用指令碼簡化安裝程序。本指南也說明如何啟用負載平衡即服務 (LBaaS)。

  • 為 Kubernetes 設定 OpenStack 雲端服務供應商:說明如何在部署於 OpenStack 的叢集上安裝 OpenStack 雲端服務供應商。如要搭配使用 Google Distributed Cloud 軟體和 OpenStack,不一定要有 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,可以為每個節點指定一個 和 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 執行。

後續步驟