Доступ к ресурсам Kubernetes с помощью портал Azure

В этой статье вы узнаете, как получить доступ к ресурсам Служба Azure Kubernetes (AKS) и управлять ими с помощью портал Azure.

Подготовка к работе

Для просмотра ресурсов Kubernetes в портале Azure требуется кластер AKS. Любой кластер поддерживается, но если вы используете интеграцию Microsoft Entra, кластер должен использовать интеграцию Microsoft Entra под управлением AKS. Если в кластере используется устаревший идентификатор Microsoft Entra, вы можете обновить кластер на портале или с помощью Azure CLI. Кроме того, вы можете использовать портал Azure, чтобы создать новый кластер AKS.

Просмотр ресурсов Kubernetes

  1. В портал Azure перейдите к ресурсу кластера AKS.

  2. В меню слева выберите ресурсы Kubernetes. Список ресурсов Kubernetes отображает следующие категории:

    • Пространства имен отображают сведения о пространствах имен кластера.
    • Ресурс Рабочие нагрузки отображает сведения о развертываниях, модулях pod, наборах реплик, наборах с отслеживанием состояния, наборах демонов, заданиях и заданиях cron, развернутых в кластере.
    • Ресурс Службы и входящий трафик показывают все службы и ресурсы входящего трафика кластера.
    • Ресурс Хранилище отображает классы хранения Azure и сведения о постоянном томе.
    • Ресурс Конфигурация отображает карты и секреты конфигурации кластера.
    • Пользовательские ресурсы отображают все настраиваемые ресурсы , развернутые в кластере.
    • События отображают все события, связанные с кластером.
    • Команда run позволяет удаленно вызывать команды, такие как kubectl и helmв кластере, через API Azure без прямого подключения к кластеру.

    Снимок экрана: ресурсы Kubernetes, отображаемые в портал Azure.

Развертывание примера приложения

В этом разделе мы развернем приложение Магазина Azure из краткого руководства по AKS.

Подключение к кластеру

Чтобы развернуть приложение Магазина Azure, необходимо подключиться к кластеру AKS. Выполните следующие действия, чтобы подключиться к кластеру с помощью портал Azure:

  1. На странице обзора кластера AKS выберите "Подключиться".
  2. Следуйте инструкциям по подключению к кластеру с помощью Cloud Shell, Azure CLI или команды Run.

Развертывание приложения Магазина 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 с поддержкой Container Insights могут получить доступ к различным аналитическим сведениям о развертывании в портал Azure. Если вы не включили мониторинг в кластере, его можно включить, выполнив следующие действия.

  1. В меню слева в ресурсе кластера AKS выберите Monitoring>Insights>Configure monitoring.

  2. На странице "Настройка аналитики контейнеров" выберите "Настроить".

    Для развертывания и начала сбора данных решение мониторинга может занять несколько минут.

Просмотр аналитических сведений о развертывании

  1. В левом меню ресурса кластера AKS выберите рабочие нагрузки.
  2. Выберите развертывание из списка для просмотра аналитических сведений о развертывании, таких как использование ЦП и памяти.

Примечание.

Вы также можете выбрать Аналитику мониторинга>, чтобы просмотреть более подробные сведения о конкретных узлах и контейнерах.

Очистка ресурсов

Если вам больше не нужен приложение Магазина Azure, вы можете удалить службы, чтобы избежать затрат На Azure.

  1. В списке ресурсов Kubernetes выберите службы и входящий трафик.
  2. Выберите службы, которые нужно удалить, и нажмите кнопку "Удалить".

Устранение неполадок

Несанкционированный доступ

Чтобы получить доступ к ресурсам Kubernetes, необходимо получить доступ к кластеру AKS, API Kubernetes и объектам Kubernetes. Убедитесь, что вы являетесь администратором кластера или пользователем с соответствующими разрешениями для доступа к кластеру AKS. Дополнительные сведения см. в разделе "Параметры доступа и удостоверения" для AKS.

Включение представление ресурсов

Возможно, потребуется включить представление ресурсов Kubernetes для существующих кластеров.

Совет

Вы можете добавить функцию AKS для авторизованных диапазонов IP-адресов сервера API, чтобы ограничить доступ сервера 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. Добавьте IP-адрес в утвержденный список AKS с помощью az aks update команды с параметром --api-server-authorized-ip-ranges .

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

Следующие шаги

В этой статье показано, как получить доступ к ресурсам Kubernetes из портал Azure. Дополнительные сведения об AKS основные понятия для Служба Azure Kubernetes (AKS)