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

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

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

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

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

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

    volumes:
    - name: gitconfig
      csi:
        readOnly: true
        driver: connectors-csi
        volumeAttributes:
          connector.name: "<connector-name>"
          configuration.names: "gitconfig"
    • Установите driver ровно в connectors-csi
    • Убедитесь, что коннектор существует в том же namespace
    • Установите configuration.names в gitconfig для операций с Git
    • Убедитесь, что коннектор находится в том же namespace, что и pod

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

    # Проверить, существует ли коннектор
    kubectl get connector <connector-name> -n <namespace>
    
    # Проверить, что коннектор в состоянии Ready
    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

    Проверка монтирования тома

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

    volumeMounts:
    - name: gitconfig
      mountPath: "/path/to/user/home/"

    Важные моменты:

    • Путь монтирования должен совпадать с домашним каталогом пользователя, выполняющего команды Git
    • Для конфигурации Git файл всегда создаётся по пути <mountPath>/.gitconfig

    Как определить правильный домашний каталог:

    # Проверить домашний каталог пользователя в контейнере
    kubectl exec <pod-name> -n <namespace> -- env | grep HOME
    
    # Распространённые пути в зависимости от образа контейнера:
    # - Для root пользователя: /root/
    # - Для пользователя git: /home/git/
    # - Для непривилегированных пользователей: /home/<username>/

    Проверка успешности монтирования:

    # Проверить, что тома корректно смонтированы
    kubectl describe pod <pod-name> -n <namespace> | grep -A 5 "Mounts:"
    
    # Посмотреть события монтирования в описании pod
    kubectl describe pod <pod-name> -n <namespace> | grep -A 10 "Events:"

    Анализ событий 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 "gitconfig" :
      rpc error: code = NotFound desc = connector "git-github" not found

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

    Поиск сгенерированной конфигурации Git

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

    # Проверить, существует ли файл по ожидаемому пути
    kubectl exec <pod-name> -n <namespace> -- ls -la /path/to/home/.gitconfig

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

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

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

    Просмотрите содержимое сгенерированного файла .gitconfig:

    kubectl exec <pod-name> -n <namespace> -- cat /path/to/.gitconfig

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

    1. HTTP-заголовок с токеном аутентификации:

      [http]
          extraHeader = Authorization: Basic <token>
    2. Правило переписывания URL:

      [url "http://c-<connector-name>.<connector-namespace>.svc"]
          insteadOf = <original-git-url>

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

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

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

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

    Тестирование с диагностическим Pod

    Создайте диагностический pod для проверки работы CSI:

    apiVersion: v1
    kind: Pod
    metadata:
      name: csi-debug-pod
      namespace: <namespace>
    spec:
      containers:
      - name: debug
        image: alpine
        command: ["sleep", "3600"]
        volumeMounts:
        - name: gitconfig
          mountPath: "/root/"
      volumes:
      - name: gitconfig
        csi:
          driver: connectors-csi
          readOnly: true
          volumeAttributes:
            connector.name: "<connector-name>"
            configuration.names: "gitconfig"

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