Используйте этот раздел, чтобы устранить неполадки безопасности и идентификации в AKS Arc.
Ошибка Get-AksHciCredential с ошибкой "Не удается найти указанный путь"
Командлет Get-AksHciCredential
PowerShell завершается ошибкой при выполнении другого пользователя администратора, отличного от используемого для установки AksHci. Команда создает каталог KUBE и помещает в него файл конфигурации. Однако команда завершается сбоем со следующей ошибкой:
Error: open C:\Users\<user>\.kube\config: The system cannot find the path specified.
Воспроизведение
- Установите AksHci.
- Создайте целевой кластер.
- Войдите на компьютер в качестве другого пользователя администратора (функция с несколькими администраторами).
- Запустите
Get-AksHciCredential -Name $clusterName
.
Ожидаемое поведение
Get-AksHciCredential
должен иметь возможность создать каталог KUBE в домашнем каталоге пользователя и поместить файл конфигурации в этот каталог.
Чтобы обойти проблему, создайте каталог KUBE в домашнем каталоге пользователя. Чтобы создать каталог, используйте следующую команду:
mkdir "$HOME/.kube"
После этого шага Get-AksHciCredential
не следует завершать ошибку.
Ошибка "Срок действия сертификата — не удается подключиться к серверу: x509"
Целевой кластер недоступен, если сертификаты уровня управления не обновляются. При попытке достичь кластера kubectl
команда отображает следующую ошибку:
certificate expired - Unable to connect to the server: x509: certificate has expired or is not yet valid: current time 2022-07-26T12:24:15-04:00 is after 2022-07-15T15:01:07Z
Примечание.
Эта проблема устранена в выпуске за сентябрь 2022 г. и более поздних версий.
Воспроизведение
- Установите AksHci.
- Установите целевой кластер. 3. Отключите кластер (виртуальные машины) в течение более 4 дней.
- Снова включите кластер.
Симптомы и устранение рисков
Целевой кластер недоступен. Любая kubectl
команда, выполняемая в целевом кластере, возвращает сообщение об ошибке, аналогичное следующему:
certificate expired - Unable to connect to the server: x509: certificate has expired or is not yet valid: current time 2022-07-26T12:24:15-04:00 is after 2022-07-15T15:01:07Z
Чтобы исправить проблему
Выполните следующую команду, чтобы обновить созданный сертификат вручную:
Update-AksHciClusterCertificates -Name my-workload -cluster -fixKubeletCredentials
Создайте новые учетные данные:
Get-AksHciCredential -name <clustername>
Через несколько минут повторите kubectl
команду, чтобы узнать, доступен ли кластер.
Примечание.
Существует известная ошибка в AksHci версии 1.0.14.x и более ранних версиях. Если виртуальная машина уровня управления имеет шаблон имен, отличный от -control-plane-
шаблона, Update-AksHciClusterCertificates
команда может не работать. Необходимо обновить сертификат, войдите на виртуальную машину уровня управления:
- Найдите IP-адрес виртуальной машины уровня управления целевым кластером.
- Выполните следующую команду:
ssh -i (get-mocconfig).sshPrivateKey clouduser@<ip>
- Вывод списка файлов татуировки сертификата:
sudo ls /etc/kubernetes/pki/cert-tattoo-*
- Создайте сертификаты с помощью каждого файла, указанного предыдущей командой:
sudo /usr/bin/cert-tattoo-provision CreateCertsWithAltNames <absolute-path-of-cert-tattoo-file>
Сбой подтверждения проверки подлинности: x509: сертификат, подписанный неизвестным центром
Эта ошибка может возникнуть при развертывании нового кластера AKS или добавлении пула узлов в существующий кластер.
- Убедитесь, что пользователь, выполняющий команду, является тем же пользователем, который установил AKS в Azure Stack или Windows Server. Дополнительные сведения о предоставлении доступа нескольким пользователям см. в разделе "Настройка нескольких администраторов".
- Если пользователь тот же, и ошибка сохраняется, выполните следующие действия, чтобы устранить проблему:
- Удалите старый сертификат устройства управления, удалив
$env:UserProfile.wssd\kvactl\cloudconfig
его. - Запустите
Repair-AksHciCerts
. - Выполните команду
Get-AksHciCluster
, чтобы убедиться, что она исправлена.
Журналы целевого кластера pod недоступны — удаленная ошибка: tls: внутренняя ошибка
Журналы целевого кластера недоступны. При попытке получить доступ к журналам pod в целевом кластере отображается следующая ошибка TLS:
Error from server: Get "[https://10.0.0.0:10250/containerLogs/kube-system/kube-apiserver-moc-l9iv8xjn3av/kube-apiserver":](https://10.0.0.0:10250/containerLogs/kube-system/kube-apiserver-moc-l9iv8xjn3av/kube-apiserver%22:) remote error: tls: internal error
Примечание.
Это известная проблема в AksHci версии 1.0.14.x и более ранних версиях. Исправлено в составе выпуска 1.0.14.x (сентябрьский выпуск и более поздние версии). Целевые кластеры, обновленные до этой версии, не должны испытывать эту проблему.
Воспроизведение
- Установите AksHci.
- Установите целевой кластер.
- Не обновляйте кластер в течение 60 дней.
- Перезапустите кластер.
Симптомы и устранение рисков
Журналы целевого модуля pod не должны быть доступны. Любая kubectl
команда журнала, выполняемая в целевом кластере, должна возвращать сообщение об ошибке, аналогичное следующему:
Error from server: Get "[https://10.0.0.0:10250/containerLogs/kube-system/kube-apiserver-moc-l9iv8xjn3av/kube-apiserver":](https://10.0.0.0:10250/containerLogs/kube-system/kube-apiserver-moc-l9iv8xjn3av/kube-apiserver%22:) remote error: tls: internal error
Чтобы исправить проблему
Выполните следующую команду, чтобы обновить созданный сертификат вручную:
Update-AksHciClusterCertificates -Name my-workload -fixKubeletCredentials
Создайте новые учетные данные:
Get-AksHciCredential -name <clustername>
План управления кластером — срок действия сертификата— не удается подключиться к серверу: x509
Целевой кластер недоступен, если сертификаты уровня управления не обновляются. При попытке достичь кластера kubectl
команда создает следующую ошибку:
certificate expired - Unable to connect to the server: x509: certificate has expired or is not yet valid: current time 2022-07-26T12:24:15-04:00 is after 2022-07-15T15:01:07Z
Примечание.
Эта проблема устранена в выпуске за сентябрь 2022 г. и более поздних версий.
Воспроизведение
- Установите AksHci.
- Установите целевой кластер.
- Отключите кластер (vms) в течение более 4 дней.
- Снова включите кластер.
Симптомы и устранение рисков
Целевой кластер должен быть недоступен. Любая kubectl
команда, выполняемая в целевом кластере, должна возвращать сообщение об ошибке, аналогичное следующему:
certificate expired - Unable to connect to the server: x509: certificate has expired or is not yet valid: current time 2022-07-26T12:24:15-04:00 is after 2022-07-15T15:01:07Z
Чтобы исправить проблему
Выполните следующую команду, чтобы обновить созданный сертификат вручную:
Update-AksHciClusterCertificates -Name my-workload -cluster -fixKubeletCredentials
Создайте новые учетные данные:
Get-AksHciCredential -name <clustername>
Через несколько минут повторите kubectl
команду, чтобы узнать, доступен ли кластер.
Сбой модуля pod KMS, а журналы pod KMS содержат ошибки
Ниже приведены некоторые возможные симптомы этой проблемы:
kubectl get secrets
завершается сбоем с внутренней ошибкой.kubectl logs <kmspod-name> -n kube-system
содержит ошибки.- Сбой подключения секретов в томах при попытке создания модулей pod.
- Не удается запустить apiserver.
Просмотрите журналы pod KMS для ошибок, выполнив следующую команду:
kubectl logs <kmspod-name> -n kube-system
Если журналы возвращают ошибку в отношении недопустимого маркера в модуле KMS кластера управления, выполните следующую команду:
Update-AksHciCertificates
Если в целевом модуле KMS для целевого кластера возникает ошибка, выполните следующую команду:
UpdateAksHciClusterCertificates -name <cluster-name> -fixcloudcredential
Ошибка "System.Collections.Hashtable.generic_non_zero 1 [Ошибка: срок действия сертификата: истек срок действия]"
Срок действия сертификата mocctl истекает, если он не используется более 60 дней. AKS Arc использует mocctl
средство командной строки для взаимодействия с MocStack для выполнения операций, связанных с Moc. Срок действия сертификата, который mocclt
команда использует для обмена данными с cloudagent, истекает через 60 дней. Команда mocctl
автоматически обновляет сертификат, когда он используется близко к сроку действия (через 42 дня). Если команда часто не используется, срок действия сертификата истекает.
Чтобы воспроизвести поведение, установите AKS Arc и не выполняется никаких операций, связанных mocctl
с командой, в течение 60 дней.
Чтобы устранить проблему, снова войдите в систему после истечения срока действия сертификата. Выполните следующую команду PowerShell, чтобы войти в систему:
Repair-MocLogin
Удаление сертификата KVA при истечении срока действия через 60 дней
Срок действия сертификата KVA истекает через 60 дней, если обновление не выполняется.
Update-AksHci
и любая команда, связанная kvactl
с этим, вызовет следующую ошибку.
Error: failed to get new provider: failed to create azurestackhci session: Certificate has expired: Expired
Чтобы устранить эту ошибку, удалите файл \kvactl\cloudconfig
сертификата с истекшим сроком действия и повторите попытку Update-AksHci
на узле, где отображается проблема с истечением срока действия сертификата. Вы можете использовать следующую команду:
$env:UserProfile.wssd\kvactl\cloudconfig
Вы можете найти обсуждение проблемы в сертификате KVA, если срок действия сертификата KVA истек через 60 дней.
Специальные разрешения Active Directory необходимы для присоединенных к домену локальных узлов Azure
Пользователи, развертывающие и настраивающие Служба Azure Kubernetes в локальной среде Azure, должны иметь разрешение "Полный контроль" для создания объектов AD в контейнере Active Directory, в которых создаются объекты сервера и службы.
Повышение прав пользователя.
Uninstall-AksHciAdAuth завершается ошибкой "[Ошибка с сервера (NotFound): секреты "keytab-akshci-scale-reliability" не найдены].
Если uninstall-AksHciAdAuth отображает эту ошибку, ее следует игнорировать, так как эта проблема будет исправлена.
This issue will be fixed.
Журналы kubectl возвращают сообщение "ошибка: необходимо войти на сервер (сервер попросил клиента предоставить учетные данные)"
Существует проблема с AKS Arc, в которой кластер может остановить возврат журналов. При этом выполняется kubectl logs <pod_name>
возврат "ошибка: необходимо войти на сервер (сервер попросил клиента предоставить учетные данные)". AKS Arc поворачивает основные сертификаты Kubernetes каждые 4 дня, но иногда сервер API Kubernetes не немедленно перезагрузит сертификат клиента для обмена данными с kubelet при обновлении сертификатов.
Чтобы устранить проблему, существует несколько вариантов.
Повторное выполнение
kubectl logs
. Например, выполните следующую команду PowerShell:while (1) {kubectl logs <POD_NAME>; sleep 1}
kube-apiserver
Перезапустите контейнер на каждом из плоскостей управления для кластера. Перезапуск сервера API не влияет на выполнение рабочих нагрузок. Чтобы перезапустить сервер API, выполните следующие действия.Получите IP-адреса для каждого уровня управления в кластере:
kubectl get nodes -o wide
Выполните следующую команду:
ssh -i (get-akshciconfig).Moc.sshPrivateKey clouduser@<CONTROL_PLANE_IP> 'sudo crictl stop $(sudo crictl ps --name kube-apiserver -o json | jq -r .containers[0].id)'
При необходимости, но не рекомендуется для рабочих нагрузок, можно попросить
kube-apiserver
не проверить сертификат сервера kubelet:kubectl logs <POD_NAME> --insecure-skip-tls-verify-backend=true