Устранение известных проблем и ошибок безопасности и идентификации в AKS Arc

Используйте этот раздел, чтобы устранить неполадки безопасности и идентификации в AKS Arc.

Ошибка Get-AksHciCredential с ошибкой "Не удается найти указанный путь"

Командлет Get-AksHciCredential PowerShell завершается ошибкой при выполнении другого пользователя администратора, отличного от используемого для установки AksHci. Команда создает каталог KUBE и помещает в него файл конфигурации. Однако команда завершается сбоем со следующей ошибкой:

Error: open C:\Users\<user>\.kube\config: The system cannot find the path specified.

Воспроизведение

  1. Установите AksHci.
  2. Создайте целевой кластер.
  3. Войдите на компьютер в качестве другого пользователя администратора (функция с несколькими администраторами).
  4. Запустите 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 г. и более поздних версий.

Воспроизведение

  1. Установите AksHci.
  2. Установите целевой кластер. 3. Отключите кластер (виртуальные машины) в течение более 4 дней.
  3. Снова включите кластер.

Симптомы и устранение рисков

Целевой кластер недоступен. Любая 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

Чтобы исправить проблему

  1. Выполните следующую команду, чтобы обновить созданный сертификат вручную:

    Update-AksHciClusterCertificates  -Name my-workload -cluster -fixKubeletCredentials
    
  2. Создайте новые учетные данные:

    Get-AksHciCredential -name <clustername>
    

Через несколько минут повторите kubectl команду, чтобы узнать, доступен ли кластер.

Примечание.

Существует известная ошибка в AksHci версии 1.0.14.x и более ранних версиях. Если виртуальная машина уровня управления имеет шаблон имен, отличный от -control-plane-шаблона, Update-AksHciClusterCertificates команда может не работать. Необходимо обновить сертификат, войдите на виртуальную машину уровня управления:

  1. Найдите IP-адрес виртуальной машины уровня управления целевым кластером.
  2. Выполните следующую команду: ssh -i (get-mocconfig).sshPrivateKey clouduser@<ip>
  3. Вывод списка файлов татуировки сертификата: sudo ls /etc/kubernetes/pki/cert-tattoo-*
  4. Создайте сертификаты с помощью каждого файла, указанного предыдущей командой: sudo /usr/bin/cert-tattoo-provision CreateCertsWithAltNames <absolute-path-of-cert-tattoo-file>

Сбой подтверждения проверки подлинности: x509: сертификат, подписанный неизвестным центром

Эта ошибка может возникнуть при развертывании нового кластера AKS или добавлении пула узлов в существующий кластер.

  1. Убедитесь, что пользователь, выполняющий команду, является тем же пользователем, который установил AKS в Azure Stack или Windows Server. Дополнительные сведения о предоставлении доступа нескольким пользователям см. в разделе "Настройка нескольких администраторов".
  2. Если пользователь тот же, и ошибка сохраняется, выполните следующие действия, чтобы устранить проблему:
  • Удалите старый сертификат устройства управления, удалив $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 (сентябрьский выпуск и более поздние версии). Целевые кластеры, обновленные до этой версии, не должны испытывать эту проблему.

Воспроизведение

  1. Установите AksHci.
  2. Установите целевой кластер.
  3. Не обновляйте кластер в течение 60 дней.
  4. Перезапустите кластер.

Симптомы и устранение рисков

Журналы целевого модуля 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

Чтобы исправить проблему

  1. Выполните следующую команду, чтобы обновить созданный сертификат вручную:

    Update-AksHciClusterCertificates  -Name my-workload -fixKubeletCredentials
    
  2. Создайте новые учетные данные:

    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 г. и более поздних версий.

Воспроизведение

  1. Установите AksHci.
  2. Установите целевой кластер.
  3. Отключите кластер (vms) в течение более 4 дней.
  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

Чтобы исправить проблему

  1. Выполните следующую команду, чтобы обновить созданный сертификат вручную:

    Update-AksHciClusterCertificates  -Name my-workload -cluster -fixKubeletCredentials
    
  2. Создайте новые учетные данные:

    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, выполните следующие действия.

    1. Получите IP-адреса для каждого уровня управления в кластере:

      kubectl get nodes -o wide
      
    2. Выполните следующую команду:

      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