部署和管理已啟用 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 延伸模組的安裝 範圍: clusternamespace
--cluster-name 必須在其中建立擴充實例的 Azure Arc 已啟用 Kubernetes 資源的名稱
--resource-group 包含已啟用 Azure Arc 的 Kubernetes 資源的資源群組
--cluster-type 必須建立擴充實例的叢集類型。 在大部分情況下,請使用 connectedClusters對應至已啟用 Azure Arc 的 Kubernetes 叢集。

選擇性參數

視需要針對您的案例使用其中一或多個選擇性參數,以及必要的參數。

注意

您可以選擇將 擴充功能實例自動升級至最新的次要和修補程式版本,方法是將 設定 auto-upgrade-minor-versiontrue,或者您可以改為使用 --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 延伸模組作者可以在不同的發行定型中發佈版本,例如 StablePreview等。如果未明確設定此參數, 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 延伸模組的安裝範圍 - clusternamespace
--release-train 延伸模組作者可以在不同的發行定型中發佈版本,例如 StablePreview等。如果未明確設定此參數, 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 版本。

下一步