註冊現有叢集
叢集註冊功能取代了匯入叢集的功能。
Rancher 對已註冊叢集的管理控制取決於叢集的類型。有關詳細資訊,請參閱已註冊叢集的管理功能。
前置需求
Kubernetes 節點角色
已註冊的 RKE Kubernetes 叢集必須具有所有三個節點角色 - etcd、controlplane 和 worker。僅具有 controlplane 元件的叢集無法在 Rancher 中註冊。
有關 RKE 節點角色的更多資訊,請參閱最佳實踐。
權限
要在 Rancher 中註冊叢集,您必須在該叢集中具有 cluster-admin 權限。如果沒有,請透過執行以下命令向您的使用者授予這些權限:
kubectl create clusterrolebinding cluster-admin-binding \
--clusterrole cluster-admin \
--user [USER_ACCOUNT]
由於預設情況下 Google Kubernetes Engine (GKE) 不授予 cluster-admin 角色,因此在註冊 GKE 叢集之前,您必須在 GKE 叢集上執行這些命令。要了解 有關 GKE 基於角色的存取控制的更多資訊,請參閱官方 Google 文件。
Elastic Kubernetes Service (EKS)、Azure Kubernetes Service (AKS) 和 Google Kubernetes Engine (GKE)
要成功從 Rancher 匯入或佈建 EKS、AKS 和 GKE 叢集,該叢集必須至少有一個受管理的節點群組。
只有在啟用本地帳戶的情況下才能匯入 AKS 叢集。如果叢集設定為使用 Microsoft Entra ID 進行身份驗證,Rancher 將無法匯入該叢集並報告錯誤。
EKS Anywhere 叢集可以使用 API 位址和憑證匯入/註冊到 Rancher 中,就像任何下游叢集一樣。EKS Anywhere 叢集被視為匯入的叢集,並且不具有來自 Rancher 的完整生命週期支援。
不支援 GKE Autopilot 叢集。有關 GKE 模式之間差異的更多資訊,請參閱比較 GKE Autopilot 和 Standard。
註冊叢集
- 點擊 ☰ > Cluster Management。
- 在 Clusters 頁面上,點擊 Import Existing。
- 選擇叢集的類型。
- 使用 Member Roles 設定叢集的使用者授權。點擊 Add Member 新增可以存取叢集的使用者。使用 Role 下拉式選單為每個使用者設定權限。
- 如果您要在 Rancher 中匯入通用 Kubernetes 叢集,請執行以下設定步驟:
- 在 Cluster Options 下點擊 Agent Environment Variables 以設定 rancher cluster agent 的環境變數。環境變數可以使用鍵值對設定。如果 rancher agent 需要使用代理與 Rancher 伺服器通訊,可以使用 agent 環境變數設定
HTTP_PROXY、HTTPS_PROXY和NO_PROXY環境變數。 - 啟用專案網路隔離以確保叢集支援 Kubernetes
NetworkPolicy資源。使用者可以在 Advanced Options 下拉式選單下選擇 Project Network Isolation 選項來執行此操作。 - 為匯入的 RKE2 和 K3s 叢集設定版本管理功能。
- 在 Cluster Options 下點擊 Agent Environment Variables 以設定 rancher cluster agent 的環境變數。環境變數可以使用鍵值對設定。如果 rancher agent 需要使用代理與 Rancher 伺服器通訊,可以使用 agent 環境變數設定
- 點擊 Create。
- 顯示
cluster-admin權限的前置需求(請參閱上面的 前置需求),包括滿足前置需求的範例命令。 - 將
kubectl命令複製到剪貼簿,並在設定了 kubeconfig 指向您要匯入的叢集的節點上執行它。如果您不確定它是否設定正確,請在執行 Rancher 中顯示的命令之前執行kubectl get nodes進行驗證。 - 如果您使用自簽憑證,您將收到
certificate signed by unknown authority訊息。要解決此驗證問題,請將 Rancher 中顯示的以curl開頭的命令複製到剪貼簿。然後在設定了 kubeconfig 指向您要匯入的叢集的節點上執行該命令。 - 完成在節點上執行命令後,點擊 Done。
NO_PROXY 環境變數沒有標準化,值的接受格式可能因應用程式而異。在 Rancher 中設定 NO_PROXY 變數時,值必須遵守 Golang 預期的格式。
具體來說,該值應該是一個逗號分隔的字串,僅包含 IP 位址、CIDR 表示法、網域名稱或特殊 DNS 標籤(例如 *)。有關預期值格式的完整描述,請參閱 上游 Golang 文件。
結果:
- 您的叢集已註冊並被分配 Pending 狀態。Rancher 正在部署資源以管理您的叢集。
- 您可以在叢集狀態更新為 Active 後存取您的叢集。
- Active 叢集被分配兩個專案:
Default(包含命名空間default)和System(包含命名空間cattle-system、ingress-nginx、kube-public和kube-system(如果存在))。
您無法重新註冊目前在 Rancher 設定中處於 active 狀態的叢集。
使用 Terraform 設定匯入的 EKS、AKS 或 GKE 叢集
使用 Terraform 匯入 EKS、AKS 或 GKE 叢集時,您應該僅定義 Rancher 需要的最小欄位。這很重要,因為 Rancher 會用使用者提供的任何設定覆寫叢集設定中的內容。
即使當前 叢集和使用者提供的設定之間存在微小差異,也可能產生意外結果。
Rancher 使用 Terraform 和 eks_config_v2 匯入 EKS 叢集所需的最小設定欄位如下:
- cloud_credential_id
- name
- region
- imported(對於匯入的叢集,此欄位應始終設定為
true)
匯入的 EKS 叢集的範例 YAML 設定:
resource "rancher2_cluster" "my-eks-to-import" {
name = "my-eks-to-import"
description = "Terraform EKS Cluster"
eks_config_v2 {
cloud_credential_id = rancher2_cloud_credential.aws.id
name = var.aws_eks_name
region = var.aws_region
imported = true
}
}
您可以在 Rancher2 Terraform Provider 文件中找到其他雲端提供者的其他範例。
已註冊叢集的管理功能
Rancher 對已註冊叢集的管理控制取決於叢集的類型。
所有已註冊叢集的功能
註冊叢集後,叢集擁有者可以:
- 透過基於角色的存取控制管理叢集存取
- 啟用監控、告警和通知 器
- 啟用日誌記錄
- 啟用 Istio
- 管理專案和工作負載
已註冊 RKE2 和 K3s 叢集的其他功能
K3s 是一個輕量級、完全相容的 Kubernetes 發行版,適用於邊緣安裝。
RKE2 是 Rancher 的下一代 Kubernetes 發行版,適用於資料中心和雲端安裝。
當在 Rancher 中註冊 RKE2 或 K3s 叢集時,Rancher 會識別它。 Rancher UI 將公開所有已註冊叢集可用的功能,以及以下用於編輯和升級叢集的選項:
- 啟用或停用版本管理
- 當啟用版本管理時升級 Kubernetes 版本
- 當啟用版本管理時設定升級策略
- 檢視用於啟動每個節點的叢集設定參數和環境變數的唯讀版本
已註冊 EKS、AKS 和 GKE 叢集的其他功能
Rancher 處理已註冊的 EKS、AKS 或 GKE 叢集的方式與在 Rancher 中建立的叢集類似。但是,當您透過 Rancher UI 刪除已註冊的叢集時,Rancher 不會銷毀它們。
當您在 Rancher 中建立 EKS、AKS 或 GKE 叢集,然後將其刪除時,Rancher 會銷毀該叢集。當您透過 Rancher 刪除已註冊的叢集時,Rancher 伺服器會從該叢集_斷開連線_。該叢集仍然保持活躍,儘管它不再在 Rancher 中。您仍然可以像在註冊之前一樣存取已取消註冊的叢集。
有關可用於管理已註冊叢集的功能的更多資訊,請參閱依叢集類型的叢集管理功能。
為 RKE2 和 K3s 叢集設定版本管理
當為匯入的叢集啟用版本管理時,在 Rancher 外部升級它可能會導致意外後果。
可以使用以下選項之一為匯入的 RKE2 和 K3s 叢集設定版本管理功能:
- Global default(預設):從全域 imported-cluster-version-management 設定繼承行為。
- True: 啟用版本管理,允許使用者透過 Rancher 控制叢集的 Kubernetes 版本和升級策略。
- False: 停用版本管理,使使用者能夠在 Rancher 外部獨立管理叢集的 Kubernetes 版本。
您可以透過修改 imported-cluster-version-management 設定來定義新建立的叢集或設定為「Global default」的現有叢集的預設行為。
對全域 imported-cluster-version-management 設定的更改在叢集的下一個調解週期期間生效。
如果為叢集啟用了版本管理,Rancher 將部署 system-upgrade-controller 應用程式以及相關的 Plans 和其他所需的 Kubernetes 資 源到叢集中。 如果停用版本管理,Rancher 將從叢集中移除這些元件。
設定 RKE2 和 K3s 叢集升級
在升級之前備份叢集是 Kubernetes 的最佳實踐。當升級具有外部資料庫的高可用性 K3s 叢集時,請以關聯式資料庫提供者建議的方式備份資料庫。
concurrency 是在升級期間允許不可用的最大節點數。如果不可用節點的數量大於 concurrency,升級將失敗。如果升級失敗,您可能需要修復或移除失敗的節點,然後升級才能成功。
- Controlplane concurrency: 一次升級的最大伺服器節點數;也是最大不可用伺服器節點數
- Worker concurrency: 同時升級的最大 worker 節點數;也是最大不可用 worker 節點數
在 RKE2 和 K3s 文件中,controlplane 節點稱為伺服器節點。這些節點執行 Kubernetes master,它維護叢集 的所需狀態。預設情況下,這些 controlplane 節點具有將工作負載排程到它們的能力。
同樣在 RKE2 和 K3s 文件中,具有 worker 角色的節點稱為 agent 節點。預設情況下,在叢集中部署的任何工作負載或 pod 都可以排程到這些節點。
已註冊 RKE2 和 K3s 叢集的除錯日誌記錄和疑難排解
節點由在下游叢集中執行的系統升級控制器升級。根據叢集設定,Rancher 部署兩個計畫來升級節點:一個用於 controlplane 節點,一個用於 worker。系統升級控制器遵循計畫並升級節點。
要在系統升級控制器部署上啟用除錯日誌記錄,請編輯 configmap 將除錯環境變數設定為 true。然後重新啟動 system-upgrade-controller pod。
可以透過執行以下命令檢視 system-upgrade-controller 建立的日誌:
kubectl logs -n cattle-system system-upgrade-controller
可以使用以下命令檢視計畫的當前狀態:
kubectl get plans -A -o yaml
如果叢集在升級時卡住,請重新啟動 system-upgrade-controller。
為了防止升級時出現問題,應遵循 Kubernetes 升級最佳實踐。