使用 Karmada 管理多個 OKE 叢集的工作負載
簡介
Karmada (Kubernetes Armada 的短片) 是一個管理平台,可讓您在多個 Kubernetes 叢集和雲端環境中無縫執行雲端原生應用程式,而無需對應用程式進行任何變更。Karmada 運用 Kubernetes 原生 API 和進階排程功能,提供開放且真正的多雲端 Kubernetes 體驗。
Karmada 專為多雲端和混合雲端使用案例所設計,提供統包自動化功能來管理跨叢集的應用程式。其核心功能包括集中管理、高可用性、自動化故障復原,以及智慧型流量排程。
目標
-
在主機 OKE 叢集上安裝
karmada元件。 -
將 2 個 OKE 成員叢集加入 karmada。
-
使用跨 2 個 OKE 叢集的 Pod 建立部署。
必備條件
-
OCI 上的作用中租用戶
-
具備建立資源之足夠權限的使用者
注意:您只能在增強型叢集使用工作負載識別。
-
已建立要部署資源的區間
-
區間中所有 VM 的動態群組:
All {instance.compartment.id = 'ocid1.compartment.oc1...'} -
使用執行處理主體執行 OCI CLI 命令的原則:
allow dynamic-group <dynamic-group-name> to manage cluster-family in compartment <compartment-name>
任務 1:建立示範所需的資源
注意:下列步驟顯示如何在示範期間部署 3 個 OKE 叢集和 1 個 VM。
-
從 github 下載含有 terraform 檔案的發行版本壓縮檔: karmada-on-oke 。
-
使用 Oracle Resource Manager 建立和套用堆疊。
- 使用漢堡功能表,移至「Oracle 資源管理程式」。
- 選擇
Stacks。 - 選取
Create stack。 - 選取
My configuration。 - 在
My configuration區段中,確定已選取Zip file。選擇您先前下載的壓縮檔。選取Upload。 - 為堆疊指定有意義的名稱。
- 選取
Next。 - 選擇將用於連線 VM 的 SSH 公開金鑰。
- 選擇將在其中建立資源的區間。
- 選取
Next。 - 在下一個畫面上,選取
Run apply。 - 選取
Create。
-
取得 VM 的公用 IP。
在上一個步驟順利執行工作後,日誌中的最後一行應包含 VM 的公用 IP。記錄以供日後使用。
工作 2:在主機叢集上安裝 Karmada
- 使用先前取得的 IP,使用 ssh 連線至 VM:
ssh -i <private-ssh-key> opc@<public-IP> -
切換至 root 使用者:
sudo su - -
在主機叢集上安裝 karmada 元件 :
karmadactl init
作業 3:加入 OKE 叢集成員
-
結合叢集
member1:karmadactl --kubeconfig /etc/karmada/karmada-apiserver.config join member1 --cluster-kubeconfig=$HOME/.kube/config-k1 -
結合叢集
member2:karmadactl --kubeconfig /etc/karmada/karmada-apiserver.config join member2 --cluster-kubeconfig=$HOME/.kube/config-k2 -
顯示成員叢集:
karmadactl --kubeconfig /etc/karmada/karmada-apiserver.config get clusters
工作 4:在 Karmada 部署工作負載
-
設定
KUBECONFIG指向 karmada-api 伺服器:export KUBECONFIG=/etc/karmada/karmada-apiserver.config -
建立部署和對應的傳輸原則:
kubectl apply -f https://raw.githubusercontent.com/oracle-devrel/oci-automation-hub/refs/heads/main/karmada-on-oke-sample/deployment.yaml kubectl apply -f https://raw.githubusercontent.com/oracle-devrel/oci-automation-hub/refs/heads/main/karmada-on-oke-sample/propagationpolicy.yaml -
驗證部署:
karmadactl get deployment --operation-scope all輸出應該類似於:
# karmadactl get deployment --operation-scope all NAME CLUSTER READY UP-TO-DATE AVAILABLE AGE ADOPTION nginx Karmada 3/3 3 3 22m - nginx member2 2/2 2 2 22m Y nginx member1 1/1 1 1 22m Y請注意,在三個 Pod 中,兩個 Pod 在
member2上執行,另一個在member1上執行。
任務 5:清理
- 從主機叢集解除安裝 karmada 元件:
karmadactl --kubeconfig /root/.kube/config deinit
- 毀棄使用 terraform 堆疊所建立的資源:
- 瀏覽回「Oracle 資源管理程式」。
- 選取您建立的堆疊。
- 選取
Destroy。
確認
- 作者 - Daniel Dinu (首席雲端工程師)
其他學習資源
您可以在 docs.oracle.com/learn 上探索其他實驗室,或在 Oracle Learning YouTube 頻道上存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Manage Workload on Multiple OKE Clusters Using Karmada
G55123-01