設定 Azure 雲端提供者
在 Kubernetes 1.30 及更高版本中,你必須使用 out-of-tree Azure 雲端提供者。Azure 雲端提供者已被完全移除,在升級到 Kubernetes 1.30 後將無法運作。下面列出的步驟仍然需要設定 Azure 雲端提供者。你可以在完成 Azure 的先決條件後,設定 out-of-tree 雲端提供者。
你也可以在 Kubernetes 1.29 及更早版本上從 in-tree 遷移到 out-of-tree Azure 雲端提供者。所有現有叢集必須在升級到 v1.30 之前進行遷移,以保持功能正常。
從 Kubernetes 1.29 開始,in-tree 雲端提供者已被停用。你必須將 DisableCloudProviders 和 DisableKubeletCloudCredentialProviders 功能閘道設定為 false 才能使用 in-tree Azure 雲端提供者。你可以透過在進階叢集配置中為叢集的 Kubelet、Controller Manager 和 API Server 設定 feature-gates=DisableCloudProviders=false,DisableKubeletCloudCredentialProviders=false 作為額外參數來實現此操作。在 Kubelet、Controller Manager 和 API Server 參數中設定 DisableKubeletCloudCredentialProviders=false 可啟用 in-tree 功能,用於向 Azure 容器登錄進行身份驗證以取得映像拉取憑證。有關更多詳細資訊,請參閱 Kubernetes 1.29:Mandala 發布說明和此部落格文章。
從 Kubernetes 版本 1.26 開始,in-tree 持久磁碟區類型 kubernetes.io/azure-disk 和 kubernetes.io/azure-file 已被棄用,將不再受支援。對於新叢集,請安裝 CSI 驅動程式,或按照上游遷移文件遷移到相應的 CSI 驅動程式 disk.csi.azure.com 和 file.csi.azure.com。
當使用 Azure 雲端提供者時,你可以利用以下功能:
-
負載平衡器: 在特定網路安全群組中啟動 Azure Load Balancer。
-
持久磁碟區: 支援使用具有標準和進階儲存帳戶的 Azure Blob 磁碟和 Azure 受控磁碟。
-
網路儲存: 透過 CIFS 掛載支援 Azure Files。
Azure 訂閱不支援以下帳戶類型:
- 單一租戶帳戶(即沒有訂閱的帳戶)。
- 多訂閱帳戶。
RKE 和 RKE2 的先決條件
要為 RKE 和 RKE2 設定 Azure 雲端提供者,需要配置以下憑證:
1. 設定 Azure Tenant ID
訪問 Azure portal,登入並前往 Azure Active Directory 並選擇 Properties。你的 Directory ID 就是你的 Tenant ID (tenantID)。
如果你想使用 Azure CLI,可以執行命令 az account show 來取得資訊。
2. 設定 Azure Client ID 和 Azure Client Secret
訪問 Azure portal,登入並按照以下步驟建立 App Registration 以及相應的 Azure Client ID (aadClientId) 和 Azure Client Secret (aadClientSecret)。
- 選擇 Azure Active Directory。
- 選擇 App registrations。
- 選擇 New application registration。
- 選擇一個 Name,選擇
Web app / API作為 Application Type,以及一個 Sign-on URL(在這種情況下可以是任何內容)。 - 選擇 Create。
在 App registrations 檢視中,你應該看到你建立的 App registration。在 APPLICATION ID 欄位中顯示的值就是你需要用作 Azure Client ID 的值。
下一步是生成 Azure Client Secret:
- 開啟你建立的 App registration。
- 在 Settings 檢視中,開啟 Keys。
- 輸入 Key description,選擇過期時間並選擇 Save。
- 在 Value 欄位中顯示的生成值就是你需要用作 Azure Client Secret 的值。此值只會顯示一次。
3. 配置應用程式註冊權限
最後你需要做的是為你的 App registration 指派適當的權限。
- 前往 More services,搜尋 Subscriptions 並開啟它。
- 開啟 Access control (IAM)。
- 選擇 Add。
- 對於 Role,選擇
Contributor。 - 對於 Select,選擇你建立的 App registration 名稱。
- 選擇 Save。
4. 設定 Azure 網路安全群組名稱
需要自訂 Azure 網路安全群組(securityGroupName)以允許 Azure Load Balancers 工作。
如果你使用 Rancher Machine Azure 驅動程式佈建主機,則需要手動編輯它們以將它們指派給此網路安全群組。
你應該在佈建期間將自訂主機指派給此網路安全群組。
只有預期作為負載平衡器後端的主機需要在此群組中。
在 Rancher 中設定 RKE2 叢集
本節僅適用於使用 in-tree 雲端提供者建立叢集。
-
在叢集配置部分的雲端提供者下拉式選單中選擇 "Azure"。
-
提供雲端提供者配置。請注意,Rancher 會自動建立新的網路安全群組、資源群組、可用性集、子網路和虛擬網路。如果你已經建立了部分或全部這些資源,則必須在建立叢集之前指定它們。
- 點擊 Show Advanced 以檢視或編輯這些自動生成的名稱。你的雲端提供者配置必須與機器集區部分中的欄位相符。如果你有多個集區,它們都必須使用相同的資源群組、可用性集、子網路、虛擬網路和網路安全群組。
- 以下提供一個範例。根據需要進行修改。
雲端提供者配置範例
{
"cloud":"AzurePublicCloud",
"tenantId": "YOUR TENANTID HERE",
"aadClientId": "YOUR AADCLIENTID HERE",
"aadClientSecret": "YOUR AADCLIENTSECRET HERE",
"subscriptionId": "YOUR SUBSCRIPTIONID HERE",
"resourceGroup": "docker-machine",
"location": "westus",
"subnetName": "docker-machine",
"securityGroupName": "rancher-managed-KA4jV9V2",
"securityGroupResourceGroup": "docker-machine",
"vnetName": "docker-machine-vnet",
"vnetResourceGroup": "docker-machine",
"primaryAvailabilitySetName": "docker-machine",
"routeTableResourceGroup": "docker-machine",
"cloudProviderBackoff": false,
"useManagedIdentityExtension": false,
"useInstanceMetadata": true
} -
在 Cluster Configuration > Advanced 部分下,點擊 Additional Controller Manager Args 下的 Add 並新增此旗標:
--configure-cloud-routes=false -
點擊 Create 提交表單並建立叢集。