Поделиться через


Использование соединителя службы в Служба Azure Kubernetes (AKS)

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

  • Какие операции выполняются в кластере при создании подключения к службе.
  • Как использовать соединитель службы ресурсов Kubernetes.
  • Устранение неполадок и просмотр журналов соединителя службы в кластере AKS.

Необходимые компоненты

Что делает соединитель служб операций в кластере

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

Добавление расширения Kubernetes соединителя службы

Расширение Kubernetes sc-extension добавляется в кластер при первом создании подключения к службе. Далее расширение помогает создавать ресурсы Kubernetes в кластере пользователя, когда запрос на подключение службы поступает в соединитель службы. Расширение можно найти в кластере AKS в портал Azure в меню "Расширения + приложения".

Снимок экрана: портал Azure, просмотр расширения AKS.

Расширение также хранит метаданные подключений кластера. Удаление расширения делает все подключения в кластере недоступными. Оператор расширения размещается в пространстве sc-systemимен кластера.

Создание ресурсов kubernetes

Соединитель служб создает некоторые ресурсы kubernetes для пространства имен, указанного пользователем при создании подключения к службе. Ресурсы Kubernetes хранят сведения о подключении, необходимые определениям рабочей нагрузки пользователя или коду приложения для связи с целевыми службами. В зависимости от различных типов проверки подлинности создаются разные ресурсы Kubernetes. Connection String Для типов проверки Service Principal подлинности создается секрет Kubernetes. Workload Identity Для типа проверки подлинности учетная запись службы Kubernetes также создается в дополнение к секрету Kubernetes.

Ресурсы kubernetes, созданные соединителем службы для каждого подключения к службе, можно найти в портал Azure в ресурсе Kubernetes в меню соединителя службы.

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

Удаление подключения к службе не удаляет связанный ресурс Kubernetes. При необходимости удалите ресурс вручную, используя например команду kubectl delete.

Включение надстройки azureKeyvaultSecretsProvider

Если целевая служба — Azure Key Vault, а драйвер CSI хранилища секретов включен при создании подключения к службе, соединитель службы включает azureKeyvaultSecretsProvider надстройку для кластера.

Снимок экрана: портал Azure, включение драйвера CSI для keyvault при создании подключения.

Следуйте инструкциям из руководства по подключению к Azure Key Vault с помощью драйвераCSI, чтобы настроить подключение к Azure Key Vault с помощью драйвера CSI для хранилища секретов.

Включение удостоверения рабочей нагрузки и издателя OpenID Connect (OIDC)

Если при создании подключения к службе используется Workload Identity тип проверки подлинности, соединитель службы включает удостоверение рабочей нагрузки и издателя OIDC для кластера.

Снимок экрана: портал Azure с помощью удостоверения рабочей нагрузки для создания подключения.

Если используется Workload Identityтип проверки подлинности, для создания учетных данных федеративного удостоверения необходимо назначаемое пользователем управляемое удостоверение. Дополнительные сведения о том, что такое удостоверения рабочей нагрузки, или следуйте инструкциям из руководства, чтобы настроить подключение к служба хранилища Azure с помощью удостоверения рабочей нагрузки.

Использование соединителя службы, созданного ресурсами Kubernetes

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

Секрет Kubernetes

Секрет kubernetes создается при использовании типа Connection String проверки подлинности или Service Principal. Определение рабочей нагрузки кластера может ссылаться непосредственно на секрет. Следующий фрагмент кода является примером.

apiVersion: batch/v1
kind: Job
metadata:
  namespace: default
  name: sc-sample-job
spec:
  template:
    spec:
      containers:
      - name: raw-linux
        image: alpine
        command: ['printenv']
        envFrom:
          - secretRef:
              name: <SecretCreatedByServiceConnector>
      restartPolicy: OnFailure

Затем коды приложений могут использовать строка подключения в секрете из переменной среды. Пример кода можно проверить, чтобы узнать больше о именах переменных среды и их использовании в кодах приложений для проверки подлинности в разных целевых службах.

Учетная запись службы Kubernetes

При использовании типа Workload Identityпроверки подлинности создаются как учетная запись службы Kubernetes, так и секрет. Определение рабочей нагрузки кластера может ссылаться на учетную запись службы и секрет для проверки подлинности с помощью удостоверения рабочей нагрузки. В следующем фрагменте кода приведен пример.

apiVersion: batch/v1
kind: Job
metadata:
  namespace: default
  name: sc-sample-job
  labels:
    azure.workload.identity/use: "true"
spec:
  template:
    spec:
      serviceAccountName: <ServiceAccountCreatedByServiceConnector>
      containers:
      - name: raw-linux
        image: alpine
        command: ['printenv']
        envFrom:
          - secretRef:
              name: <SecretCreatedByServiceConnector>
      restartPolicy: OnFailure

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

Устранение неполадок и просмотр журналов

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

Проверка расширения Kubernetes соединителя службы

Расширение Kubernetes соединителя служб основано на расширениях кластера Kubernetes с поддержкой Azure Arc. Используйте следующие команды, чтобы изучить наличие ошибок во время установки или обновления расширения.

  1. k8s-extension Установите расширение Azure CLI.
az extension add --name k8s-extension
  1. Получение состояния расширения соединителя службы. statuses Проверьте свойство в выходных данных команды, чтобы узнать, есть ли ошибки.
az k8s-extension show \
    --resource-group MyClusterResourceGroup \
    --cluster-name MyCluster \
    --cluster-type managedClusters \
    --name sc-extension

Проверка журналов кластера Kubernetes

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

  1. Подключитесь к кластеру AKS.

    az aks get-credentials \
        --resource-group MyClusterResourceGroup \
        --name MyCluster
    
  2. Расширение Service Connector устанавливается в пространстве имен через диаграмму helm, проверьте пространство sc-system имен и выпуск helm, выполнив следующие команды.

    • Проверьте, существует ли пространство имен.
    kubectl get ns
    
    • Проверьте состояние выпуска helm.
    helm list -n sc-system
    
  3. Во время установки или обновления расширения задание kubernetes, которое вызывается sc-job , создает ресурсы Kubernetes для подключения к службе. Сбой выполнения задания обычно вызывает сбой расширения. Проверьте состояние задания, выполнив следующие команды. Если sc-job он не существует в sc-system пространстве имен, он должен быть выполнен успешно. Это задание предназначено для автоматического удаления после успешного выполнения.

    • Проверьте наличие задания.
    kubectl get job -n sc-system
    
    • Получите состояние задания.
    kubectl describe job/sc-job -n sc-system
    
    • Просмотр журналов заданий.
    kubectl logs job/sc-job -n sc-system
    

Распространенные ошибки и устранение рисков

Конфликт

Сообщение об ошибке:Operation returned an invalid status code: Conflict.

Причина. Эта ошибка обычно возникает при попытке создать подключение к службе, пока кластер AKS (Служба Azure Kubernetes) находится в состоянии обновления. Обновление подключения службы конфликтует с текущим обновлением. Это также может произойти, если подписка не зарегистрирована Microsoft.KubernetesConfiguration для поставщика ресурсов.

Устранение рисков.

  • Выполните следующую команду, чтобы убедиться, что подписка зарегистрирована для Microsoft.KubernetesConfiguration поставщика ресурсов.

    az provider register -n Microsoft.KubernetesConfiguration
    
  • Убедитесь, что кластер находится в состоянии "Успешно" и повторите создание.

Время ожидания

Сообщение об ошибке:

  • Long running operation failed with status 'Failed'. Unable to get a response from the Agent in time.
  • Timed out waiting for the resource to come to a ready/completed state

Причина. Эта ошибка часто возникает, когда задание Kubernetes, используемое для создания или обновления расширения кластера соединителя служб, не может быть запланировано из-за ограничений ресурсов или других проблем.

Устранение рисков. Ознакомьтесь с журналами кластера Kubernetes, чтобы определить и устранить подробные причины. Распространенная проблема заключается в том, что узлы недоступны из-за предимпции. В этом случае рассмотрите возможность добавления дополнительных узлов или включения автоматического масштабирования для узлов.

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

Сообщение об ошибке:You do not have permission to perform ... If access was recently granted, please refresh your credentials.

Причина. Соединитель служб требует разрешений для работы ресурсов Azure, к которым требуется подключиться, для выполнения операций подключения от вашего имени. Эта ошибка указывает на отсутствие необходимых разрешений для некоторых ресурсов Azure.

Устранение рисков. Проверьте разрешения на ресурсы Azure, указанные в сообщении об ошибке. Получите необходимые разрешения и повторите создание.

Отсутствующая регистрация подписки

Сообщение об ошибкеThe subscription is not registered to use namespace 'Microsoft.KubernetesConfiguration':

Причина. Соединитель службы требует, чтобы подписка была зарегистрирована для Microsoft.KubernetesConfiguration, которая является поставщиком ресурсов для расширений кластера Kubernetes с поддержкой Azure Arc.

Устранение рисков. Зарегистрируйте Microsoft.KubernetesConfiguration поставщика ресурсов, выполнив следующую команду. Дополнительные сведения об ошибках регистрации поставщика ресурсов см. в этом руководстве.

az provider register -n Microsoft.KubernetesConfiguration

Другие проблемы

Если описанные выше меры не устраняют проблему, попробуйте сбросить расширение кластера соединителя службы, удалив его, а затем повторите создание. Этот метод, как ожидается, устраняет большинство проблем, связанных с расширением кластера Service Connector.

Чтобы сбросить расширение, используйте следующие команды CLI:

az extension add --name k8s-extension

az k8s-extension delete \
    --resource-group <MyClusterResourceGroup> \
    --cluster-name <MyCluster> \
    --cluster-type managedClusters \
    --name sc-extension

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

Узнайте, как интегрировать различные целевые службы и ознакомиться с параметрами конфигурации и методами проверки подлинности.