Использование соединителя службы в Служба Azure Kubernetes (AKS)
Служба Azure Kubernetes (AKS) — это одна из служб вычислений, поддерживаемых соединителем служб. Эта статья поможет вам понять следующее:
- Какие операции выполняются в кластере при создании подключения к службе.
- Как использовать соединитель службы ресурсов Kubernetes.
- Устранение неполадок и просмотр журналов соединителя службы в кластере AKS.
Необходимые компоненты
- В этом руководстве предполагается, что вы уже знаете основные понятия соединителя служб.
Что делает соединитель служб операций в кластере
В зависимости от различных целевых служб и типов проверки подлинности, выбранных при создании подключения к службе, соединитель службы выполняет различные операции в кластере AKS. Ниже перечислены возможные операции, сделанные соединителем службы.
Добавление расширения Kubernetes соединителя службы
Расширение Kubernetes sc-extension
добавляется в кластер при первом создании подключения к службе. Далее расширение помогает создавать ресурсы Kubernetes в кластере пользователя, когда запрос на подключение службы поступает в соединитель службы. Расширение можно найти в кластере AKS в портал Azure в меню "Расширения + приложения".
Расширение также хранит метаданные подключений кластера. Удаление расширения делает все подключения в кластере недоступными. Оператор расширения размещается в пространстве sc-system
имен кластера.
Создание ресурсов kubernetes
Соединитель служб создает некоторые ресурсы kubernetes для пространства имен, указанного пользователем при создании подключения к службе. Ресурсы Kubernetes хранят сведения о подключении, необходимые определениям рабочей нагрузки пользователя или коду приложения для связи с целевыми службами. В зависимости от различных типов проверки подлинности создаются разные ресурсы Kubernetes. Connection String
Для типов проверки Service Principal
подлинности создается секрет Kubernetes. Workload Identity
Для типа проверки подлинности учетная запись службы Kubernetes также создается в дополнение к секрету Kubernetes.
Ресурсы kubernetes, созданные соединителем службы для каждого подключения к службе, можно найти в портал Azure в ресурсе Kubernetes в меню соединителя службы.
Удаление подключения к службе не удаляет связанный ресурс Kubernetes. При необходимости удалите ресурс вручную, используя например команду kubectl delete.
Включение надстройки azureKeyvaultSecretsProvider
Если целевая служба — Azure Key Vault, а драйвер CSI хранилища секретов включен при создании подключения к службе, соединитель службы включает azureKeyvaultSecretsProvider
надстройку для кластера.
Следуйте инструкциям из руководства по подключению к Azure Key Vault с помощью драйвераCSI, чтобы настроить подключение к Azure Key Vault с помощью драйвера CSI для хранилища секретов.
Включение удостоверения рабочей нагрузки и издателя OpenID Connect (OIDC)
Если при создании подключения к службе используется Workload Identity
тип проверки подлинности, соединитель службы включает удостоверение рабочей нагрузки и издателя OIDC для кластера.
Если используется 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. Используйте следующие команды, чтобы изучить наличие ошибок во время установки или обновления расширения.
k8s-extension
Установите расширение Azure CLI.
az extension add --name k8s-extension
- Получение состояния расширения соединителя службы.
statuses
Проверьте свойство в выходных данных команды, чтобы узнать, есть ли ошибки.
az k8s-extension show \
--resource-group MyClusterResourceGroup \
--cluster-name MyCluster \
--cluster-type managedClusters \
--name sc-extension
Проверка журналов кластера Kubernetes
Если во время установки расширения возникает ошибка, а сообщение об ошибке в statuses
свойстве не предоставляет достаточно сведений о том, что произошло, вы можете дополнительно проверить журналы Kubernetes с помощью следующих действий.
Подключитесь к кластеру AKS.
az aks get-credentials \ --resource-group MyClusterResourceGroup \ --name MyCluster
Расширение Service Connector устанавливается в пространстве имен через диаграмму helm, проверьте пространство
sc-system
имен и выпуск helm, выполнив следующие команды.- Проверьте, существует ли пространство имен.
kubectl get ns
- Проверьте состояние выпуска helm.
helm list -n sc-system
Во время установки или обновления расширения задание 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
Следующие шаги
Узнайте, как интегрировать различные целевые службы и ознакомиться с параметрами конфигурации и методами проверки подлинности.