共用方式為


使用 Azure 入口網站存取 Kubernetes 資源

在本文中,您可了解如何使用 Azure 入口網站存取和管理 Azure Kubernetes Service (AKS) 資源。

開始之前

若要檢視 Azure 入口網站中的 Kubernetes 資源,您需要 AKS 叢集。 支援任何叢集,但如果您使用 Microsoft Entra 整合,您的叢集必須使用 AKS 管理的 Microsoft Entra 整合。 如果您的叢集使用舊版 Microsoft Entra ID,您可以在入口網站中或使用 Azure CLI 升級叢集。 您也可以使用 Azure 入口網站以建立新的 AKS 叢集。

檢視 Kubernetes 資源

  1. Azure 入口網站中,瀏覽至您的 AKS 叢集資源。

  2. 從服務功能表中,選取 [Kubernetes 資源]。 Kubernetes 資源清單會顯示下列類別:

    • [命名空間] 會顯示叢集命名空間的相關資訊。
    • 工作負載會顯示部署、Pod、複本集、StatefulSet、精靈集、作業和部署至叢集的 cron 作業的相關資訊。
    • 服務和輸入會顯示您叢集的所有服務和輸入資源。
    • 儲存體會顯示您的 Azure 儲存體類別和永續性磁片區資訊。
    • 組態會顯示叢集的 ConfigMap 和秘密。
    • [自訂資源] 會顯示部署至叢集的任何自訂資源。
    • [事件] 會顯示與叢集相關的所有事件。
    • Run 命令可讓您透過 Azure API 在叢集上遠端叫用 kubectlhelm 這類命令,而不需要直接連線至叢集。

    此螢幕擷取畫面顯示 Azure 入口網站中顯示的 Kubernetes 資源。

部署應用程式範例

在本節中,我們會從 AKS 快速入門部署 Azure 市集應用程式。

連線至您的叢集

若要部署 Azure 市集應用程式,您必須連線到 AKS 叢集。 請遵循下列步驟,使用 Azure 入口網站連線到您的叢集:

  1. 從 AKS 叢集的 [概觀] 頁面,選取 [連線]
  2. 請遵循指示,使用 Cloud ShellAzure CLIRun 命令連線到叢集。

部署 Azure 市集應用程式

  1. 從 [Kubernetes 資源] 清單中,選取 [服務和輸入]

  2. 選取 [建立]>[套用 YAML]

  3. 將下列 YAML 複製並貼到編輯器中:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: rabbitmq
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: rabbitmq
      template:
        metadata:
          labels:
            app: rabbitmq
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: rabbitmq
            image: mcr.microsoft.com/mirror/docker/library/rabbitmq:3.10-management-alpine
            ports:
            - containerPort: 5672
              name: rabbitmq-amqp
            - containerPort: 15672
              name: rabbitmq-http
            env:
            - name: RABBITMQ_DEFAULT_USER
              value: "username"
            - name: RABBITMQ_DEFAULT_PASS
              value: "password"
            resources:
              requests:
                cpu: 10m
                memory: 128Mi
              limits:
                cpu: 250m
                memory: 256Mi
            volumeMounts:
            - name: rabbitmq-enabled-plugins
              mountPath: /etc/rabbitmq/enabled_plugins
              subPath: enabled_plugins
          volumes:
          - name: rabbitmq-enabled-plugins
            configMap:
              name: rabbitmq-enabled-plugins
              items:
              - key: rabbitmq_enabled_plugins
                path: enabled_plugins
    ---
    apiVersion: v1
    data:
      rabbitmq_enabled_plugins: |
        [rabbitmq_management,rabbitmq_prometheus,rabbitmq_amqp1_0].
    kind: ConfigMap
    metadata:
      name: rabbitmq-enabled-plugins
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: rabbitmq
    spec:
      selector:
        app: rabbitmq
      ports:
        - name: rabbitmq-amqp
          port: 5672
          targetPort: 5672
        - name: rabbitmq-http
          port: 15672
          targetPort: 15672
      type: ClusterIP
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: order-service
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: order-service
      template:
        metadata:
          labels:
            app: order-service
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: order-service
            image: ghcr.io/azure-samples/aks-store-demo/order-service:latest
            ports:
            - containerPort: 3000
            env:
            - name: ORDER_QUEUE_HOSTNAME
              value: "rabbitmq"
            - name: ORDER_QUEUE_PORT
              value: "5672"
            - name: ORDER_QUEUE_USERNAME
              value: "username"
            - name: ORDER_QUEUE_PASSWORD
              value: "password"
            - name: ORDER_QUEUE_NAME
              value: "orders"
            - name: FASTIFY_ADDRESS
              value: "0.0.0.0"
            resources:
              requests:
                cpu: 1m
                memory: 50Mi
              limits:
                cpu: 75m
                memory: 128Mi
          initContainers:
          - name: wait-for-rabbitmq
            image: busybox
            command: ['sh', '-c', 'until nc -zv rabbitmq 5672; do echo waiting for rabbitmq; sleep 2; done;']
            resources:
              requests:
                cpu: 1m
                memory: 50Mi
              limits:
                cpu: 75m
                memory: 128Mi
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: order-service
    spec:
      type: ClusterIP
      ports:
      - name: http
        port: 3000
        targetPort: 3000
      selector:
        app: order-service
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: product-service
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: product-service
      template:
        metadata:
          labels:
            app: product-service
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: product-service
            image: ghcr.io/azure-samples/aks-store-demo/product-service:latest
            ports:
            - containerPort: 3002
            resources:
              requests:
                cpu: 1m
                memory: 1Mi
              limits:
                cpu: 1m
                memory: 7Mi
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: product-service
    spec:
      type: ClusterIP
      ports:
      - name: http
        port: 3002
        targetPort: 3002
      selector:
        app: product-service
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: store-front
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: store-front
      template:
        metadata:
          labels:
            app: store-front
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: store-front
            image: ghcr.io/azure-samples/aks-store-demo/store-front:latest
            ports:
            - containerPort: 8080
              name: store-front
            env:
            - name: VUE_APP_ORDER_SERVICE_URL
              value: "http://order-service:3000/"
            - name: VUE_APP_PRODUCT_SERVICE_URL
              value: "http://product-service:3002/"
            resources:
              requests:
                cpu: 1m
                memory: 200Mi
              limits:
                cpu: 1000m
                memory: 512Mi
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: store-front
    spec:
      ports:
      - port: 80
        targetPort: 8080
      selector:
        app: store-front
      type: LoadBalancer
    
  4. 選取 [新增]。

    應用程式完成部署後,您會在 [服務] 清單中看到下列服務:

    • order-service
    • product-service
    • rabbitmq
    • store-front

    Azure 入口網站中顯示的 Azure 市集應用程式服務的螢幕擷取畫面。

監視部署深入解析

在您的 AKS 叢集上啟用監視附加元件

已啟用容器深入解析的 AKS 叢集可以在 Azure 入口網站中存取各種部署深入解析。 如果您沒有在叢集上啟用監視,您可使用下列步驟加以啟用:

  1. 從 AKS 叢集資源的服務功能表中,選取 [監視深入解析>] [設定>監視]。

  2. 在 [設定容器深入解析] 頁面上,選取 [設定]

    監視解決方案可能需要幾分鐘的時間,才能部署並開始收集資料。

檢視部署深入解析

  1. 從 AKS 叢集資源的服務功能表中,選取 [工作負載]。
  2. 從清單中選取部署,以檢視部署深入解析,例如 CPU 和記憶體使用量。

注意

您也可選取 [監視]>[深入解析],以檢視特定節點和容器的更深入資訊。

清除資源

如果您不再需要 Azure 市集應用程式,您可以刪除服務,以免產生 Azure 成本。

  1. 從 [Kubernetes 資源] 清單中,選取 [服務和輸入]
  2. 選取您要刪除的服務,然後選取 [刪除]

疑難排解

未經授權的存取

若要存取 Kubernetes 資源,您必須存取 AKS 叢集、Kubernetes API 和 Kubernetes 物件。 確保您是「叢集系統管理員」或具有適當存取權限的使用者,才能存取 AKS 叢集。 如需詳細資訊,請參閱 AKS 的存取和身分識別選項

啟用資源檢視

對於現有的叢集,您可能需要啟用 Kubernetes 資源檢視。

提示

您可以針對 API 伺服器授權的 IP 範圍新增 AKS 功能,以將 API 伺服器存取限制為僅限防火牆的公用端點。 另一個選項是更新 --api-server-authorized-ip-ranges/-ApiServerAccessAuthorizedIpRange,以包含本機用戶端電腦或 IP 位址範圍 (您在其中瀏覽 Azure 入口網站) 的存取權。 為了允許此存取,您需要電腦的公用 IPv4 位址。 您可使用下列 Azure CLI 或 Azure PowerShell 命來尋找此位址,或者可在瀏覽器中搜尋「我的 IP 位址為何」。

  1. 使用下列命令擷取您的 IP 位址:

    CURRENT_IP=$(dig +short myip.opendns.com @resolver1.opendns.com)
    
  2. 使用 az aks update 命令搭配 --api-server-authorized-ip-ranges 參數,將您的 IP 位址新增至 AKS 核准的清單。

    az aks update --resource-group <resource-group-name> --name <aks-cluster-name> --api-server-authorized-ip-ranges $CURRENT_IP/32
    

下一步

本文說明如何從 Azure 入口網站存取 Kubernetes 資源。 如需 AKS 的詳細資訊,請參閱 Azure Kubernetes Services (AKS) 的核心概念