共用方式為


使用 Azure CLI 建立 Kubernetes 叢集

適用於:Azure 本機版本 23H2

本文說明如何使用 Azure CLI 在 Azure 本機中建立 Kubernetes 叢集。 工作流程如下所示:

  1. 使用 Azure CLI 在 Azure 本機 23H2 版中建立 Kubernetes 叢集。 叢集預設會連線到 Azure Arc。
  2. 建立叢集時,您會提供Microsoft Entra 群組,其中包含具有 Kubernetes 叢集系統管理員存取權的 Microsoft Entra 用戶清單。
  3. 使用 kubectl 和您的 Microsoft Entra ID 存取叢集。
  4. 在叢集中執行具有 Web 前端和 Redis 實例的範例多容器應用程式。

開始之前

  • 開始之前,請確定您有來自內部部署基礎結構系統管理員的下列詳細資料:
    • Azure 訂用帳戶標識碼 - Azure 本機用於部署和註冊的 Azure 訂用帳戶標識碼。
    • 自定義位置標識碼 - 自定義位置的 Azure Resource Manager 識別符。 自定義位置是在 Azure 本機叢集部署期間設定的。 基礎結構管理員應該提供自定義位置的 Resource Manager 識別符。 需要此參數才能建立 Kubernetes 叢集。 如果基礎結構管理員提供自定義位置名稱和資源組名,您也可以使用 az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsv取得 Resource Manager 識別符。
    • 網路標識碼 - 遵循 下列步驟建立之 Azure 本機邏輯網路的 Azure Resource Manager 識別符。 您的系統管理員應該提供邏輯網路的標識碼。 需要此參數才能建立 Kubernetes 叢集。 如果您知道邏輯網路建立所在的資源群組,您也可以使用 az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsv 來取得 Azure Resource Manager 標識符。
  • 您可以在本機開發機器中執行本文中的步驟,以在遠端 Azure 本機部署上建立 Kubernetes 叢集。 請確定您的開發電腦上有最新版的 Az CLI 。 您也可以選擇使用 az upgrade升級 Az CLI 版本。
  • 若要從任何地方連線到 Kubernetes 叢集,請建立Microsoft Entra 群組,並將成員新增至其中。 Microsoft Entra 群組中的所有成員都有叢集的叢集系統管理員存取權。 請務必將自己新增為 Microsoft Entra 群組的成員。 如果您未自行新增,就無法使用 kubectl 存取 Kubernetes 叢集。 如需建立Microsoft Entra 群組和新增使用者的詳細資訊,請參閱 管理Microsoft Entra 群組和群組成員資格
  • 在您的開發電腦上下載並安裝 kubectl 。 Kubernetes 命令行工具 kubectl 可讓您對 Kubernetes 叢集執行命令。 您可以使用 kubectl 來部署應用程式、檢查和管理叢集資源,以及檢視記錄。

安裝 Azure CLI 延伸模組

執行下列命令以安裝必要的 Azure CLI 擴充功能:

az extension add -n aksarc --upgrade
az extension add -n customlocation --upgrade
az extension add -n stack-hci-vm --upgrade
az extension add -n connectedk8s --upgrade

建立 Kubernetes 叢集

az aksarc create使用 命令在 AKS Arc 中建立 Kubernetes 叢集。執行此命令之前,請務必先登入 Azure。 如果您有多個 Azure 訂用帳戶,請使用 az account set 命令選取適當的訂用帳戶識別碼。

az aksarc create -n $aksclustername -g $resource_group --custom-location $customlocationID --vnet-ids $logicnetId --aad-admin-group-object-ids $aadgroupID --generate-ssh-keys 

幾分鐘後,命令會完成並傳回關於叢集的 JSON 格式資訊。

注意

  • SSH 金鑰值是用來存取佈建叢集中節點的公鑰。 根據預設,此機碼位於 ~/.ssh/id_rsa.pub。 您可以在叢集建立期間使用 --ssh-key-value 參數指定不同的位置。
  • --generate-ssh-keys如果您的本機計算機上沒有預先存在的 SSH 金鑰,則需要 參數。 如果您在叢集建立期間未包含此參數,而且沒有 SSH 金鑰存在,您會收到錯誤訊息。
  • 如果您已在本機計算機上擁有 SSH 金鑰,AKS 叢集會重複使用該金鑰。 在此情況下,指定 --generate-ssh-keys或省略該參數沒有任何作用。

重要

若要使用 Azure RBAC 或 AKS 叢集的工作負載身分識別,您必須在使用 Azure CLI 建立叢集期間傳遞必要的參數。 目前不支援更新現有的 AKS 叢集,以啟用工作負載身分識別和/或 Azure RBAC。 如需詳細資訊,請參閱 使用 Azure RBAC 進行 Kubernetes 授權部署和設定叢集的工作負載身分識別。

連線至 Kubernetes 叢集

現在,您可以從開發計算機執行 az connectedk8s proxy 命令,以連線到 Kubernetes 叢集。 執行此命令之前,請務必先登入 Azure。 如果您有多個 Azure 訂用帳戶,請使用 az account set 命令選取適當的訂用帳戶識別碼。

此命令會將 Kubernetes 叢集的 kubeconfig 下載到您的開發電腦,並開啟內部部署 Kubernetes 叢集的 Proxy 連線通道。 只要命令執行,通道就會開啟。 只要您想要存取叢集,即可執行此命令。 如果逾時,請關閉 CLI 視窗,開啟全新的 CLI 視窗,然後再次執行命令。

您必須擁有裝載 Kubernetes 叢集之資源群組的參與者許可權,才能成功執行下列命令:

az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config

預期輸出:

Proxy is listening on port 47011
Merged "aks-workload" as current context in .\\aks-arc-kube-config
Start sending kubectl requests on 'aks-workload' context using
kubeconfig at .\\aks-arc-kube-config
Press Ctrl+C to close proxy.

讓此工作階段保持執行狀態,並從不同的終端機/命令提示字元連線到您的 Kubernetes 叢集。 執行 kubectl get 命令,確認您可以連線到 Kubernetes 叢集。 這個指令會傳回叢集節點的清單:

kubectl get node -A --kubeconfig .\aks-arc-kube-config

下列輸出範例顯示先前步驟中建立的節點。 確定節點的狀態為就緒

NAME             STATUS ROLES                AGE VERSION
moc-l0ttdmaioew  Ready  control-plane,master 34m v1.24.11
moc-ls38tngowsl  Ready  <none>               32m v1.24.11

部署應用程式

Kubernetes 資訊清單檔會定義叢集所需的狀態,例如要執行哪些容器映像。

您可以使用指令清單來建立執行 Azure Vote 應用程式所需的所有物件。 此指令清單包含兩個 Kubernetes 部署

  • 範例 Azure Vote Python 應用程式。
  • Redis 執行個體。

也會建立兩個 Kubernetes 服務

  • Redis 執行個體的內部服務。
  • 從網際網路存取 Azure Vote 應用程式的外部服務。

建立名為 azure-vote.yaml 的檔案,並在下列指令清單中複製:

apiVersion: apps/v1 
    kind: Deployment 
    metadata: 
      name: azure-vote-back 
    spec: 
      replicas: 1 
      selector: 
        matchLabels: 
          app: azure-vote-back 
      template: 
        metadata: 
          labels: 
            app: azure-vote-back 
        spec: 
          nodeSelector: 
            "kubernetes.io/os": linux 
          containers: 
          - name: azure-vote-back 
            image: <path to image>/oss/bitnami/redis:6.0.8 
            env: 
            - name: ALLOW_EMPTY_PASSWORD 
              value: "yes" 
            resources: 
              requests: 
                cpu: 100m 
                memory: 128Mi 
              limits: 
                cpu: 250m 
                memory: 256Mi 
            ports: 
            - containerPort: 6379 
              name: redis 
    ---
    apiVersion: v1
    kind: Service 
    metadata: 
      name: azure-vote-back 
    spec: 
      ports: 
      - port: 6379 
      selector: 
        app: azure-vote-back 
    --- 
    apiVersion: apps/v1 
    kind: Deployment 
    metadata: 
      name: azure-vote-front 
    spec: 
      replicas: 1 
      selector: 
        matchLabels: 
          app: azure-vote-front 
      template: 
        metadata: 
          labels: 
            app: azure-vote-front 
        spec: 
          nodeSelector: 
            "kubernetes.io/os": linux 
          containers: 
          - name: azure-vote-front 
            image: <path to image>/azure-vote-front:v1 
            resources: 
              requests: 
                cpu: 100m 
                memory: 128Mi 
              limits: 
                cpu: 250m 
                memory: 256Mi 
            ports: 
            - containerPort: 80 
            env: 
            - name: REDIS 
              value: "azure-vote-back" 
    --- 
    apiVersion: v1 
    kind: Service 
    metadata: 
      name: azure-vote-front 
    spec: 
      type: LoadBalancer 
      ports: 
      - port: 80 
      selector: 
        app: azure-vote-front

使用 kubectl apply 命令部署應用程式,並指定 YAML 的名稱:

kubectl apply -f azure-vote.yaml --kubeconfig .\\aks-arc-kube-config

下列範例輸出會顯示已成功建立的部署和服務:

deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created

測試應用程式

執行應用程式時,Kubernetes 服務會向網際網路公開前端應用程式。 此程序可能需要幾分鐘才能完成。

使用 kubectl get service 命令搭配 自變數來 --watch 監視進度。

kubectl get service azure-vote-front --watch --kubeconfig .\aks-arc-kube-config

azure-vote-front 服務的 EXTERNAL-IP 輸出一開始會顯示為 擱置中。

NAME             TYPE         CLUSTER-IP EXTERNAL-IP PORT(S)      AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending>   80:30572/TCP 6s

當 EXTERNAL-IP 位址從 暫止 變更為實際的公用 IP 地址之後,請使用 CTRL-C 停止 kubectl 監看程式。 下列範例輸出顯示指派給服務的有效公用 IP 位址:

azure-vote-front LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m

若要查看作用中的 Azure 投票應用程式,請開啟網頁瀏覽器連至服務的外部 IP 位址。

選取叢集

az aksarc delete執行 命令以清除您所建立的叢集:

az aksarc delete --resource-group $aksclustername --name $resource_group

下一步