設定叢集以使用 OpenStack

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

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

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

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

  • 為 Kubernetes 設定 OpenStack 雲端服務供應商:說明如何在部署於 OpenStack 的叢集上安裝 OpenStack 雲端服務供應商。您不一定要使用 OpenStack 雲端服務供應商,才能搭配 OpenStack 使用 Google Distributed Cloud 軟體。

事前準備

  • 決定哪些叢集需要使用 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 執行。

後續步驟