• Русский
  • Устранение неполадок конфигурации нагрузки CSI

    В этом руководстве приведены подробные шаги по диагностике и решению распространённых проблем с драйвером Connectors CSI при монтировании конфигураций OCI registry в нагрузках.

    Обзор распространённых проблем

    ПроблемаВозможные причиныВлияние
    Ошибки монтирования томаНеправильная конфигурация CSI, драйвер недоступенНагрузка не запускается
    Конфигурация не найденаНеверный путь монтирования, отсутствуют томаОшибки при операциях pull/push
    Ошибки аутентификацииПроблемы с токеном, ошибки конфигурацииДоступ к registry запрещён

    Проверка конфигурации тома CSI

    Проверьте конфигурацию тома CSI в YAML вашей нагрузки:

    volumes:
    - name: registry-config
      csi:
        readOnly: true
        driver: connectors-csi
        volumeAttributes:
          connector.name: "<connector-name>"
          configuration.names: "registry-config"

    Распространённые параметры конфигурации:

    Название конфигурацииОписаниеСценарий использования
    registry-configСтандартная конфигурация аутентификации OCI клиента, например buildkit, buildahОбщие операции с контейнерами
    buildkitdКонфигурация демона BuildKitДля операций на базе BuildKit

    Распространённые проблемы с конфигурацией:

    ПроблемаСимптомРешение
    Неправильное имя драйвераОшибка MountVolume.SetUp failedУстановите driver ровно в connectors-csi
    Коннектор не найденОшибка could not get connectorУбедитесь, что коннектор существует в том же namespace
    Неверное имя конфигурацииКонфигурация не создаётсяУкажите правильное значение configuration.names
    Несовпадение namespaceОшибка монтирования томаУбедитесь, что коннектор находится в том же namespace, что и pod

    Как проверить:

    # Проверить, существует ли коннектор
    kubectl get connector <connector-name> -n <namespace>
    
    # Проверить, что коннектор готов
    kubectl get connector <connector-name> -n <namespace> -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}'
    
    # Проверить доступность CSI драйвера
    kubectl get pods -n connectors-system -l app.kubernetes.io/name=connectors-csi

    Анализ событий Pod

    Проверьте события Pod на предмет проблем с монтированием:

    kubectl describe pod <pod-name> -n <namespace>

    Распространённые сообщения об ошибках и решения:

    Сообщение об ошибкеПричинаРешение
    MountVolume.SetUp failedПроблемы с драйвером CSI или конфигурациейПроверьте состояние драйвера и конфигурацию тома
    waiting for ephemeral inline CSI driverДрайвер CSI не готов или не найденУбедитесь, что поды драйвера CSI запущены
    connector not foundКоннектор не существует или неверный namespaceСоздайте коннектор или исправьте namespace
    failed to generate configurationОшибки рендеринга шаблонаПроверьте состояние коннектора и ConnectorClass

    Пример ошибки и её решение:

      Warning  FailedMount  3m (x5 over 5m)  kubelet  MountVolume.SetUp failed for volume "registry-config" :
      rpc error: code = NotFound desc = connector "oci-registry" not found

    Решение: Создайте коннектор или исправьте имя коннектора в атрибутах тома.

    Поиск сгенерированных файлов конфигурации OCI

    Найдите файлы конфигурации:

    # Для registry-config
    kubectl exec <pod-name> -n <namespace> -- cat {YOUR-MOUNT-PATH}/config.json
    
    # Для buildkitd
    kubectl exec <pod-name> -n <namespace> -- cat {YOUR-MOUNT-PATH}/buildkitd.toml

    Если файлы конфигурации не найдены, проверьте:

    1. Успешность монтирования тома
    2. Состояние драйвера CSI
    3. Наличие прав у ServiceAccount
    4. Готовность коннектора
    5. Совпадение пути монтирования с ожидаемым путём пользователя контейнера

    Проверка содержимого конфигурации OCI клиента

    registry-config

    Проверьте сгенерированный файл config.json:

    kubectl exec <pod-name> -n <namespace> -- cat {YOUR-MOUNT-PATH}/config.json

    Ожидаемые элементы конфигурации:

    {
      "auths": {
        "c-<connector-name>.<namespace>.svc.cluster.local": {
          "auth": "<base64-encoded-token>"
        }
      }
    }

    Конфигурация buildkitd

    Проверьте сгенерированный файл buildkitd.toml:

    kubectl exec <pod-name> -n <namespace> -- cat {YOUR-MOUNT-PATH}/buildkitd.toml

    Ожидаемые элементы конфигурации:

    insecure-entitlements = [ "network.host", "security.insecure" ]
    [registry."c-<connector-name>.<namespace>.svc.cluster.local"]
      http = true

    Расширенное устранение неполадок

    Логи драйвера CSI

    Проверьте логи драйвера CSI для получения подробной информации об ошибках:

    kubectl logs -n connectors-system -l app.kubernetes.io/name=connectors-csi -c csi-driver

    Логи прокси-сервиса

    Проверьте логи прокси-сервиса на предмет проблем с аутентификацией или доступом:

    kubectl logs -n connectors-system -l app.kubernetes.io/name=connectors-proxy

    Дополнительные ресурсы