共用方式為


快速入門:將現有 Kubernetes 叢集連線至 Azure Arc

使用 Azure CLI 或 Azure PowerShell 將現有的 Kubernetes 叢集連線至 Azure Arc,開始使用已啟用 Azure Arc 的 Kubernetes。

如需將叢集連線至 Azure Arc 的概念性概觀,請參閱已啟用 Azure Arc 的 Kubernetes 代理程式概觀。 若要嘗試範例/練習體驗中的內容,請造訪 Azure Arc Jumpstart

必要條件

重要項目

除了這些必要條件之外,請務必符合已啟用 Azure Arc 的 Kubernetes 的所有網路需求

為已啟用 Azure Arc 的 Kubernetes 註冊提供者

  1. 輸入下列命令:

    az provider register --namespace Microsoft.Kubernetes
    az provider register --namespace Microsoft.KubernetesConfiguration
    az provider register --namespace Microsoft.ExtendedLocation
    
  2. 監視註冊流程。 註冊最多可能需要 10 分鐘。

    az provider show -n Microsoft.Kubernetes -o table
    az provider show -n Microsoft.KubernetesConfiguration -o table
    az provider show -n Microsoft.ExtendedLocation -o table
    

    註冊後,您應會看到這些命名空間的 RegistrationState 狀態變更為 Registered

建立資源群組

執行以下命令:

az group create --name AzureArcTest --location EastUS --output table

輸出:

Location    Name
----------  ------------
eastus      AzureArcTest

連線現有的 Kubernetes 叢集

執行下列命令以連線您的叢集。 此命令會將 Azure Arc 代理程式部署至叢集並將 Helm 3.6.3 版安裝至部署機器的 .azure 資料夾。 此 Helm 3 安裝僅適用於 Azure Arc,而且不會移除或變更機器上任何先前安裝的 Helm 版本。

在此範例中,叢集的名稱是 AzureArcTest1。

az connectedk8s connect --name AzureArcTest1 --resource-group AzureArcTest

輸出:

Helm release deployment succeeded

    {
      "aadProfile": {
        "clientAppId": "",
        "serverAppId": "",
        "tenantId": ""
      },
      "agentPublicKeyCertificate": "xxxxxxxxxxxxxxxxxxx",
      "agentVersion": null,
      "connectivityStatus": "Connecting",
      "distribution": "gke",
      "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/AzureArcTest/providers/Microsoft.Kubernetes/connectedClusters/AzureArcTest1",
      "identity": {
        "principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "type": "SystemAssigned"
      },
      "infrastructure": "gcp",
      "kubernetesVersion": null,
      "lastConnectivityTime": null,
      "location": "eastus",
      "managedIdentityCertificateExpirationTime": null,
      "name": "AzureArcTest1",
      "offering": null,
      "provisioningState": "Succeeded",
      "resourceGroup": "AzureArcTest",
      "tags": {},
      "totalCoreCount": null,
      "totalNodeCount": null,
      "type": "Microsoft.Kubernetes/connectedClusters"
    }

提示

上述未指定 location 參數的命令在與資源群組相同的位置建立已啟用 Azure Arc 的 Kubernetes 資源。 若要在不同位置建立已啟用 Azure Arc 的 Kubernetes 資源,請在執行 az connectedk8s connect 命令時指定 --location <region>-l <region>

重要項目

如果部署因逾時錯誤而失敗,請參閱疑難排解指南以取得如何解決此問題的詳細資料。

使用輸出 Proxy 伺服器進行連線

如果您的叢集位於輸出 Proxy 伺服器後方,則必須透過輸出 Proxy 伺服器來路由傳送要求。

  1. 在部署機器上,設定 Azure CLI 使用輸出 Proxy 伺服器時所需的環境變數:

    export HTTP_PROXY=<proxy-server-ip-address>:<port>
    export HTTPS_PROXY=<proxy-server-ip-address>:<port>
    export NO_PROXY=<cluster-apiserver-ip-address>:<port>
    
  2. 在 Kubernetes 叢集上,使用指定的 proxy-httpsproxy-http 參數執行 connect 命令。 如果您的 Proxy 伺服器同時設定 HTTP 和 HTTPS,務必針對 HTTP Proxy 使用 --proxy-http,以及針對 HTTPS Proxy 使用 --proxy-https。 如果您的 Proxy 伺服器只使用 HTTP,您可對這兩個參數使用該值。

    az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-https https://<proxy-server-ip-address>:<port> --proxy-http http://<proxy-server-ip-address>:<port> --proxy-skip-range <excludedIP>,<excludedCIDR> --proxy-cert <path-to-cert-file>
    

附註

  • 某些網路要求 (例如涉及叢集內服務對服務通訊要求),必須與透過 Proxy 伺服器路由傳送輸出通訊的流量分開。 --proxy-skip-range 參數可用逗號分隔的方式指定 CIDR 範圍和端點,讓從代理程式到這些端點的任何通訊都不會透過連出 Proxy。 至少應該將叢集中服務的 CIDR 範圍指定為此參數的值。 例如,假設 kubectl get svc -A 傳回服務清單,其中所有服務都有在範圍 10.0.0.0/16 中的 ClusterIP 值。 然後,要為 --proxy-skip-range 指定的值是 10.0.0.0/16,kubernetes.default.svc,.svc.cluster.local,.svc
  • 大部分的連出 Proxy 環境都預期有 --proxy-http--proxy-https--proxy-skip-range只有當您需要將 Proxy 預期的受信任憑證插入代理程式 Pod 的受信任憑證存放區時,才需使用 --proxy-cert
  • 連出 Proxy 必須設定為允許 Websocket 連線。

針對向外代理伺服器,如果您只提供受信任的憑證,可以只指定--proxy-cert參數來執行az connectedk8s connect

az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-cert <path-to-cert-file>

如果有多個受信任的憑證,則必須將憑證鏈(葉子憑證、中繼憑證、根憑證)合併成一個單一檔案,並將其傳入--proxy-cert參數。

附註

  • --custom-ca-cert--proxy-cert 的別名。 任一個參數都可以交替使用。 在相同的命令中傳遞這兩個參數,將會接受最後一個傳遞的參數。

驗證叢集連線

執行以下命令:

az connectedk8s list --resource-group AzureArcTest --output table

輸出:

Name           Location    ResourceGroup
-------------  ----------  ---------------
AzureArcTest1  eastus      AzureArcTest

如需針對連線問題進行疑難解答的說明,請參閱 診斷已啟用 Azure Arc 的 Kubernetes 叢集連線問題

附註

在上線叢集之後,叢集元數據最多需要十分鐘的時間(例如叢集版本和節點數目),才能出現在 Azure 入口網站中已啟用 Azure Arc 的 Kubernetes 資源概觀頁面上。

檢視適用於 Kubernetes 的 Azure Arc 代理程式

已啟用 Azure Arc 的 Kubernetes 會在 azure-arc 命名空間中部署幾個代理程式。

  1. 使用以下方式,檢視這些部署和 Pod:

    kubectl get deployments,pods -n azure-arc
    
  2. 確認所有 Pod 都處於 Running 狀態。

    輸出:

     NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
     deployment.apps/cluster-metadata-operator   1/1     1            1           13d
     deployment.apps/clusterconnect-agent        1/1     1            1           13d
     deployment.apps/clusteridentityoperator     1/1     1            1           13d
     deployment.apps/config-agent                1/1     1            1           13d
     deployment.apps/controller-manager          1/1     1            1           13d
     deployment.apps/extension-manager           1/1     1            1           13d
     deployment.apps/flux-logs-agent             1/1     1            1           13d
     deployment.apps/kube-aad-proxy              1/1     1            1           13d
     deployment.apps/metrics-agent               1/1     1            1           13d
     deployment.apps/resource-sync-agent         1/1     1            1           13d
    
     NAME                                            READY   STATUS    RESTARTS   AGE
     pod/cluster-metadata-operator-9568b899c-2stjn   2/2     Running   0          13d
     pod/clusterconnect-agent-576758886d-vggmv       3/3     Running   0          13d
     pod/clusteridentityoperator-6f59466c87-mm96j    2/2     Running   0          13d
     pod/config-agent-7cbd6cb89f-9fdnt               2/2     Running   0          13d
     pod/controller-manager-df6d56db5-kxmfj          2/2     Running   0          13d
     pod/extension-manager-58c94c5b89-c6q72          2/2     Running   0          13d
     pod/flux-logs-agent-6db9687fcb-rmxww            1/1     Running   0          13d
     pod/kube-aad-proxy-67b87b9f55-bthqv             2/2     Running   0          13d
     pod/metrics-agent-575c565fd9-k5j2t              2/2     Running   0          13d
     pod/resource-sync-agent-6bbd8bcd86-x5bk5        2/2     Running   0          13d
    

如需這些代理程式的其他資訊,請參閱 已啟用 Azure Arc 的 Kubernetes 代理程式概觀

清理資源

您可以使用下列命令,刪除已啟用 Azure Arc 的 Kubernetes 資源、任何相關聯的設定資源,以及叢集上執行的任何代理程式:

az connectedk8s delete --name AzureArcTest1 --resource-group AzureArcTest

如果刪除流程失敗,請使用下列命令強制刪除 (如果您想要略過確認提示,請新增 -y):

az connectedk8s delete -n AzureArcTest1 -g AzureArcTest --force

如果您在建立新的叢集部署時遇到問題 (因為先前建立的資源未完全移除),也可以使用此命令。

附註

使用 Azure 入口網站來刪除已啟用 Azure Arc 的 Kubernetes 資源會移除任何相關聯的設定資源,但不會移除在叢集上執行的任何代理程式。 因此,建議您使用 az connectedk8s delete 刪除已啟用 Azure Arc 的 Kubernetes 資源,而不是刪除 Azure 入口網站中的資源。

後續步驟