EKS Anywhere 叢集啟動程序如何運作?

2 分的閱讀內容
0

我想了解 Amazon Elastic Kubernetes Service (Amazon EKS) Anywhere 的啟動程序過程。

解決方法

啟動程序叢集

當您建立初始獨立叢集或管理叢集時,Amazon EKS Anywhere 也會建立啟動程序叢集。這是 Docker (KinD) 叢集中的暫時性單一節點 Kubernetes,是在個別的管理機器上建立的,以便您建立主叢集。

EKS Anywhere 會在託管 CAPI 和 CAPX 運算子的管理機器上建立啟動程序叢集。若要建立啟動程序叢集,EKS Anywhere 必須完成下列步驟:

  • 提取 KinD 節點映像
  • 準備節點
  • 寫入組態
  • 啟動控制平面
  • 安裝 CNI
  • 在以 KinD 為基礎的單一節點叢集上安裝 StorageClass

叢集建立

當啟動程序叢集正在執行,且在管理機器上正確設定時,就會開始建立目標叢集。EKS Anywhere 使用 kubectl 在下列程序中套用目標叢集組態:

1.    在 etcd、控制平面和工作節點準備就緒後,目標叢集會接收其網路組態。

2.    目標叢集會接收其預設儲存類別安裝。

3.    CAPI 提供者為在目標叢集上設定。這可讓目標叢集控制並執行管理自身所需的元件。

4.    在目標叢集上執行 CAPI 之後,CAPI 物件會從啟動程序叢集移至目標叢集的 CAPI 服務。使用 clusterctl 命令會使這在內部發生。

  1. 目標叢集會接收到 EKS Anywhere 專屬的 Kubernetes CRD 和其他附加元件。

  2. 叢集組態隨即儲存。

啟動程序過程會建立位於 CLUSTER_NAME/generated/CLUSTER_NAME-eks-a-cluster.yaml 的 YAML 檔案。

啟動程序成功時,此 YAML 檔案會移至 CLUSTER_NAME/CLUSTER_NAME-eks-a-cluster.yaml

同樣地,Kubeconfig 會從 CLUSTER_NAME/generated/CLUSTER_NAME.kind.kubeconfig 移至 CLUSTER_NAME/CLUSTER_NAME-eks-a-cluster.kubeconfig

當 etcd、控制平面和工作節點準備就緒後,工作負載叢集會接收其網路組態。當叢集為作用中且 CAPI 服務正在新叢集上執行時,即不再需要啟動程序叢集。接著,服務會刪除啟動程序叢集。

封裝工作流程

在啟動程序過程期間,EKS Anywhere 會在其工作流程中使用以下邏輯,以進行目標叢集建立、叢集升級和叢集刪除。

叢集建立

如需了解叢集建立期間的完整封裝工作流程,請參閱 GitHub 上的 create.go。在此工作流程期間,EKS Anywhere 會使用以下邏輯:

  • 設置和驗證
    **注意:**如果此步驟失敗,則表示預檢失敗或未正確設定登錄檔。
  • 建立新的啟動程序叢集
    建立新的 KinD 叢集
    在啟動程序叢集上的提供者專屬 pre-capi-install-setup
    在啟動程序叢集上安裝 cluster-api 提供者
    提供者專屬的 post-setup
  • 建立新的工作負載叢集
    等待外部 etcd 準備就緒
    等待控制平面可供使用
    等待工作負載 kubeconfig 產生
    在工作負載叢集上安裝網路
    在啟動程序叢集上安裝機器運作狀態檢查
    等待控制平面和工作機器準備就緒
  • 在管理上安裝資源
  • 安裝 eks-a 元件任務
  • 安裝 Git 作業管理程式
  • 移動叢集管理
  • 寫入 ClusterConfig
  • 刪除啟動程序叢集
  • 安裝策畫套件

叢集升級

如需叢集升級期間的完整封裝工作流程,請參閱 GitHub 上的 upgrade.go。在此工作流程期間,EKS Anywhere 會使用以下邏輯:

  • 設置和驗證
  • 更新密碼
  • 驗證 ectd CAPI 元件是否存在
  • 升級核心元件
  • 驗證所需的升級
  • 暫停 eks-a 協調
  • 建立啟動程序叢集
  • 安裝 CAPI
  • 將管理移至啟動程序叢集
  • 將管理移至工作負載叢集
  • 升級工作負載叢集
  • 刪除啟動程序叢集
  • 更新工作負載叢集和 Git 資源
  • 恢復 eks-a 協調
  • 寫入 ClusterConfig

叢集刪除

如需叢集刪除期間的完整封裝工作流程,請參閱 GitHub 上的 delete.go。在此工作流程期間,EKS Anywhere 會使用以下邏輯:

  • 設置和驗證
  • 建立管理叢集
  • 安裝 CAPI
  • 移動叢集管理
  • 刪除工作負載叢集
  • 清理 Git 儲存庫
  • 刪除套件資源
  • 刪除管理叢集

叢集建立時發生的錯誤

如果遇到問題或錯誤,請在管理機器和 capc-controller-manager 中尋找日誌。檢視 capc-system 命名空間中含有 kubectl 的 capc-controller-manager 日誌。如需進一步的疑難排解,請檢查位於 eksa-system 命名空間中之叢集的 CAPI 物件狀態。

您也可能會找到有關其他 CAPI 管理程式之記錄中的錯誤資訊,例如 capi-kubeadm-bootstrap-controller、capi-kubeadm-control-plane-controller 和 capi-controller-manager。這些管理程式會一起工作,您可以使用 kubectl get pods -A 命令在管理程式各自的命名空間中找到它們。如需詳細資訊,請參閱 EKS Anywhere 疑難排解指南

有關在啟動程序過程中修正 lint 分析錯誤的指令碼,請參閱 GitHub 上的 bootstrapper.go

相關資訊

KinD 快速入門 (在 KinD 網站上)

叢集建立工作流程

AWS 官方
AWS 官方已更新 1 年前