我想了解 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 命令會使這在內部發生。
-
目標叢集會接收到 EKS Anywhere 專屬的 Kubernetes CRD 和其他附加元件。
-
叢集組態隨即儲存。
啟動程序過程會建立位於 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 網站上)
叢集建立工作流程