你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure 门户访问 Kubernetes 资源

本文介绍如何使用 Azure 门户访问和管理 Azure Kubernetes 服务 (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 和机密。
    • 自定义资源显示部署到群集的任何自定义资源。
    • 事件显示与群集相关的所有事件。
    • 运行命令让你可以通过 Azure API 在群集上远程调用 kubectlhelm 等命令,而无需直接连接到群集。

    显示 Azure 门户中显示的 Kubernetes 资源的屏幕截图。

部署示例应用程序

在本部分中,我们将通过 AKS 快速入门部署 Azure 应用商店应用程序。

连接到群集

若要部署 Azure 应用商店应用程序,你需要连接到 AKS 群集。 按照以下步骤使用 Azure 门户连接到群集:

  1. 在 AKS 群集的“概述”页中,选择“连接”。
  2. 按照说明使用 Cloud ShellAzure CLI运行命令连接到群集。

部署 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 以包含本地客户端计算机的访问或要从其浏览 Azure 门户的 IP 地址范围。 要允许此访问,需要计算机的公共 IPv4 地址。 可以使用以下 Azure CLI 或 Azure PowerShell 命令找到此地址,也可以在浏览器中搜索“我的 IP 地址是什么”。

  1. 使用以下命令检索 IP 地址:

    CURRENT_IP=$(dig +short myip.opendns.com @resolver1.opendns.com)
    
  2. 使用带 --api-server-authorized-ip-ranges 参数的 az aks update 命令将 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 服务 (AKS) 的核心概念