部署和管理已啟用 Azure Arc 的 Kubernetes 叢集擴充功能
您可以在已啟用 Arc 的 Kubernetes 叢集中建立擴充實例,設定必要參數和選擇性參數,包括更新和組態相關的選項。 您也可以檢視、列出、更新和刪除延伸模組實例。
開始之前,請先閱讀 已啟用Arc的 Kubernetes 叢集延伸 模組的概念概觀,並檢閱 目前可用的擴充功能清單。
必要條件
最新版的 Azure CLI。
和
k8s-extension
Azure CLI 延伸模組的connectedk8s
最新版本。 執行下列命令來安裝這些擴充功能:az extension add --name connectedk8s az extension add --name k8s-extension
connectedk8s
如果 已安裝和k8s-extension
延伸模組,請確定它們已使用下列命令更新為最新版本:az extension update --name connectedk8s az extension update --name k8s-extension
現有的已啟用 Azure Arc 的 Kubernetes 連線叢集,至少有一個作業系統和架構類型的
linux/amd64
節點。 如果部署 Flux (GitOps),您可以使用不含節點的 ARM64 型叢集linux/amd64
。
建立延伸模組實例
若要建立新的擴充實例,請使用 k8s-extension create
,傳入必要參數的值。
此範例會在 已啟用 Azure Arc 的 Kubernetes 叢集上建立 Azure 監視器 Container Insights 擴充實例:
az k8s-extension create --name azuremonitor-containers --extension-type Microsoft.AzureMonitor.Containers --scope cluster --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
輸出:
{
"autoUpgradeMinorVersion": true,
"configurationProtectedSettings": null,
"configurationSettings": {
"logAnalyticsWorkspaceResourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/defaultresourcegroup-eus/providers/microsoft.operationalinsights/workspaces/defaultworkspace-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-eus"
},
"creationTime": "2021-04-02T12:13:06.7534628+00:00",
"errorInfo": {
"code": null,
"message": null
},
"extensionType": "microsoft.azuremonitor.containers",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/demo/providers/Microsoft.Kubernetes/connectedClusters/demo/providers/Microsoft.KubernetesConfiguration/extensions/azuremonitor-containers",
"identity": null,
"installState": "Pending",
"lastModifiedTime": "2021-04-02T12:13:06.753463+00:00",
"lastStatusTime": null,
"name": "azuremonitor-containers",
"releaseTrain": "Stable",
"resourceGroup": "demo",
"scope": {
"cluster": {
"releaseNamespace": "azuremonitor-containers"
},
"namespace": null
},
"statuses": [],
"systemData": null,
"type": "Microsoft.KubernetesConfiguration/extensions",
"version": "2.8.2"
}
注意
服務無法保留超過 48 小時的機密資訊。 如果已啟用 Azure Arc 的 Kubernetes 代理程式沒有超過 48 小時的網路連線能力,且無法判斷是否要在叢集上建立擴充功能,擴充功能就會 Failed
轉換為狀態。 一旦發生這種情況,您必須再次執行 k8s-extension create
,才能建立全新的擴充功能 Azure 資源。
Azure 監視器 Container Insights 是單一擴充功能(每個叢集只需要一個)。 您必須先清除任何先前的 Helm 圖表安裝 Azure 監視器 Container Insights(不含延伸模組),才能透過擴充功能安裝相同。 執行 之前az k8s-extension create
,請遵循刪除 Helm 圖表的指示。
必要參數
使用 az k8s-extension create
來建立擴充實例時,需要下列參數。
參數名稱 | 描述 |
---|---|
--name |
擴充實例的名稱 |
--extension-type |
您想要在叢集上安裝的擴充功能類型。 例如:Microsoft.AzureMonitor.Containers、microsoft.azuredefender.kubernetes |
--scope |
延伸模組的安裝 範圍: cluster 或 namespace |
--cluster-name |
必須在其中建立擴充實例的 Azure Arc 已啟用 Kubernetes 資源的名稱 |
--resource-group |
包含已啟用 Azure Arc 的 Kubernetes 資源的資源群組 |
--cluster-type |
必須建立擴充實例的叢集類型。 在大部分情況下,請使用 connectedClusters 對應至已啟用 Azure Arc 的 Kubernetes 叢集。 |
選擇性參數
視需要針對您的案例使用其中一或多個選擇性參數,以及必要的參數。
注意
您可以選擇將 擴充功能實例自動升級至最新的次要和修補程式版本,方法是將 設定 auto-upgrade-minor-version
為 true
,或者您可以改為使用 --version
參數手動設定擴充實例的版本。 建議您針對次要和修補程式版本啟用自動升級,以便您一律擁有最新的安全性修補程式和功能。
因為主要版本升級可能包含重大變更,因此不支援新主要版本的擴充功能實例自動升級。 您可以選擇何時將 擴充功能實例 手動升級至新的主要版本。
參數名稱 | 描述 |
---|---|
--auto-upgrade-minor-version |
判斷延伸模組次要版本是否自動升級的布爾值屬性。 預設設定是 true 。 如果此參數設定為 true ,則無法設定 version 參數,因為版本將會動態更新。 如果設定為 false ,則延伸模組不會自動升級,即使是修補程式版本也一樣。 |
--version |
要安裝的擴充功能版本(要釘選擴充功能實例的特定版本)。 如果 auto-upgrade-minor-version 設定為 true ,則不得提供 。 |
--configuration-settings |
設定,可傳遞至延伸模組以控制其功能。 這些會在參數名稱後面以空格分隔 key=value 配對的形式傳入。 如果在命令中使用此參數, --configuration-settings-file 則不能在同一個命令中使用。 |
--configuration-settings-file |
JSON 檔案的路徑,其中包含 key=value 要用來將組態設定傳遞至延伸模組的配對。 如果在命令中使用此參數, --configuration-settings 則不能在同一個命令中使用。 |
--configuration-protected-settings |
無法使用擷GET 取的 設定API 呼叫或az k8s-extension show 命令。 通常用來傳入敏感性設定。 這些會在參數名稱後面以空格分隔 key=value 配對的形式傳入。 如果在命令中使用此參數, --configuration-protected-settings-file 則不能在同一個命令中使用。 |
--configuration-protected-settings-file |
JSON 檔案的路徑,其中包含 key=value 要用來將敏感性設定傳遞至延伸模組的配對。 如果在命令中使用此參數, --configuration-protected-settings 則不能在同一個命令中使用。 |
--release-namespace |
這個參數指出將在其中建立發行的命名空間。 只有在 設定為 cluster 時才scope 相關。 |
--release-train |
延伸模組作者可以在不同的發行定型中發佈版本,例如 Stable 、 Preview 等。如果未明確設定此參數, Stable 則會當做預設值使用。 |
--target-namespace |
指出要在其中建立發行的命名空間。 為這個擴充實例建立的系統帳戶許可權將限制為此命名空間。 只有在 設定為 namespace 時才scope 相關。 |
顯示延伸模組詳細數據
若要檢視目前安裝之擴充實例的詳細數據,請使用 k8s-extension show
,傳入必要參數的值。
az k8s-extension show --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
輸出:
{
"autoUpgradeMinorVersion": true,
"configurationProtectedSettings": null,
"configurationSettings": {
"logAnalyticsWorkspaceResourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/defaultresourcegroup-eus/providers/microsoft.operationalinsights/workspaces/defaultworkspace-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-eus"
},
"creationTime": "2021-04-02T12:13:06.7534628+00:00",
"errorInfo": {
"code": null,
"message": null
},
"extensionType": "microsoft.azuremonitor.containers",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/demo/providers/Microsoft.Kubernetes/connectedClusters/demo/providers/Microsoft.KubernetesConfiguration/extensions/azuremonitor-containers",
"identity": null,
"installState": "Installed",
"lastModifiedTime": "2021-04-02T12:13:06.753463+00:00",
"lastStatusTime": "2021-04-02T12:13:49.636+00:00",
"name": "azuremonitor-containers",
"releaseTrain": "Stable",
"resourceGroup": "demo",
"scope": {
"cluster": {
"releaseNamespace": "azuremonitor-containers"
},
"namespace": null
},
"statuses": [],
"systemData": null,
"type": "Microsoft.KubernetesConfiguration/extensions",
"version": "2.8.2"
}
列出叢集上安裝的所有延伸模組
若要檢視叢集上安裝的所有延伸模組清單,請使用 k8s-extension list
,傳入必要參數的值。
az k8s-extension list --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
輸出:
[
{
"autoUpgradeMinorVersion": true,
"creationTime": "2020-09-15T02:26:03.5519523+00:00",
"errorInfo": {
"code": null,
"message": null
},
"extensionType": "Microsoft.AzureMonitor.Containers",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myRg/providers/Microsoft.Kubernetes/connectedClusters/myCluster/providers/Microsoft.KubernetesConfiguration/extensions/myExtInstanceName",
"identity": null,
"installState": "Pending",
"lastModifiedTime": "2020-09-15T02:48:45.6469664+00:00",
"lastStatusTime": null,
"name": "myExtInstanceName",
"releaseTrain": "Stable",
"resourceGroup": "myRG",
"scope": {
"cluster": {
"releaseNamespace": "myExtInstanceName1"
}
},
"statuses": [],
"type": "Microsoft.KubernetesConfiguration/extensions",
"version": "0.1.0"
},
{
"autoUpgradeMinorVersion": true,
"creationTime": "2020-09-02T00:41:16.8005159+00:00",
"errorInfo": {
"code": null,
"message": null
},
"extensionType": "microsoft.azuredefender.kubernetes",
"id": "/subscriptions/0e849346-4343-582b-95a3-e40e6a648ae1/resourceGroups/myRg/providers/Microsoft.Kubernetes/connectedClusters/myCluster/providers/Microsoft.KubernetesConfiguration/extensions/defender",
"identity": null,
"installState": "Pending",
"lastModifiedTime": "2020-09-02T00:41:16.8005162+00:00",
"lastStatusTime": null,
"name": "microsoft.azuredefender.kubernetes",
"releaseTrain": "Stable",
"resourceGroup": "myRg",
"scope": {
"cluster": {
"releaseNamespace": "myExtInstanceName2"
}
},
"type": "Microsoft.KubernetesConfiguration/extensions",
"version": "0.1.0"
}
]
更新延伸模組實例
注意
請參閱特定擴充功能類型的檔,以了解 中 --configuration-settings
能夠更新的特定 --configuration-protected-settings
設定。 針對 --configuration-protected-settings
,即使只有一個設定正在更新,所有設定都應該會提供。 如果省略這些設定,這些設定將會被視為過時並刪除。
若要更新現有的擴充實例,請使用 k8s-extension update
,傳入必要和選擇性參數的值。 強制和選擇性參數與用來建立擴充實例的參數稍有不同。
此範例會將 auto-upgrade-minor-version
Azure 機器學習 擴充實例的設定更新為 true
:
az k8s-extension update --name azureml --extension-type Microsoft.AzureML.Kubernetes --scope cluster --cluster-name <clusterName> --resource-group <resourceGroupName> --auto-upgrade-minor-version true --cluster-type managedClusters
更新的必要參數
參數名稱 | 描述 |
---|---|
--name |
擴充實例的名稱 |
--cluster-name |
必須建立擴充實例的叢集名稱 |
--resource-group |
包含叢集的資源群組 |
--cluster-type |
必須建立擴充實例的叢集類型。 針對已啟用 Azure Arc 的 Kubernetes 叢集, 請使用 connectedClusters 。 針對 AKS 叢集,請使用 managedClusters 。 |
更新的選擇性參數
參數名稱 | 描述 |
---|---|
--auto-upgrade-minor-version |
布爾值屬性,指定延伸模組次要版本是否自動升級。 預設設定是 true 。 如果此參數設定為 true,則無法設定 version 參數,因為版本將會動態更新。 如果設定為 false ,則延伸模組不會自動升級,即使是修補程式版本也一樣。 |
--version |
要安裝的擴充功能版本(要釘選擴充功能實例的特定版本)。 如果 auto-upgrade-minor-version 設定為 true ,則不得提供 。 |
--configuration-settings |
設定,可傳遞至延伸模組以控制其功能。 這些會在參數名稱後面以空格分隔 key=value 配對的形式傳入。 如果在命令中使用此參數, --configuration-settings-file 則不能在同一個命令中使用。 只需要提供需要更新的設定。 提供的設定將會取代為指定的值。 |
--configuration-settings-file |
JSON 檔案的路徑,其中包含 key=value 要用於將組態設定傳遞至延伸模組的配對。 如果在命令中使用此參數, --configuration-settings 則不能在同一個命令中使用。 |
--configuration-protected-settings |
無法使用 擷GET 取的 設定API 呼叫或az k8s-extension show 命令。 通常用來傳入敏感性設定。 這些會在參數名稱後面以空格分隔 key=value 配對的形式傳入。 如果在命令中使用此參數, --configuration-protected-settings-file 則不能在同一個命令中使用。 當您更新受保護的設定時,應該指定所有受保護的設定。 如果省略這些設定,這些設定將會被視為過時並刪除。 |
--configuration-protected-settings-file |
JSON 檔案的路徑,其中包含 key=value 要用於將敏感性設定傳入延伸模組的配對。 如果在命令中使用此參數, --configuration-protected-settings 則不能在同一個命令中使用。 |
--scope |
延伸模組的安裝範圍 - cluster 或 namespace 。 |
--release-train |
延伸模組作者可以在不同的發行定型中發佈版本,例如 Stable 、 Preview 等。如果未明確設定此參數, Stable 則會當做預設值使用。 |
升級延伸模組實例
如先前所述,如果您設定 auto-upgrade-minor-version
為 true,在發行新的次要版本時,會自動升級延伸模組。 在大部分情況下,建議啟用自動升級。 如果您設定 auto-upgrade-minor-version
為 false,如果您想要較新版本,則必須手動升級擴充功能。
也需要手動升級,才能取得延伸模組的新主要實例。 您可以選擇何時升級,以避免使用主要版本升級的任何非預期的中斷性變更。
若要手動升級擴充實例,請使用 k8s-extension update
並設定 version
參數來指定版本。
此範例會將 Azure 機器學習 擴充實例更新為 x.y.z 版:
az k8s-extension update --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters --name azureml --version x.y.z
刪除延伸模組實例
若要刪除叢集上的擴充實例,請使用 k8s-extension delete
,傳入必要參數的值:
az k8s-extension delete --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters
注意
代表此延伸模組的 Azure 資源會立即刪除。 只有在 Kubernetes 叢集上執行的代理程式具有網路連線能力,且可以再次連絡 Azure 服務以擷取所需的狀態時,才會刪除與此擴充功能相關聯的叢集 Helm 版本。
下一步
- 如需完整的命令和參數清單,請檢閱 az k8s-extension CLI 參考。
- 深入瞭解 延伸模組如何使用已啟用Arc的 Kubernetes 叢集。
- 檢閱 目前適用於已啟用 Azure Arc 的 Kubernetes 的叢集延伸模組。
- 取得擴充功能問題的疑難解答說明。