• Русский
  • Устранение неполадок статуса коннектора

    В этом руководстве представлена подробная информация, которая поможет вам диагностировать и решать распространённые проблемы с коннекторами на основе их условий статуса.

    Содержание

    Проверка статуса коннектора

    Чтобы просмотреть полную информацию о статусе коннектора, включая все условия, выполните:

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

    Для более детальной информации, включая полный объект статуса и условия:

    kubectl get connector <connector-name> -n <namespace> -o yaml

    Эти команды отобразят все состояния условий, что позволит легко определить, какие именно условия не выполняются.

    Устранение неполадок по конкретным условиям

    Ready = False

    Это сводное условие, которое истинно только тогда, когда все остальные условия истинны.

    Шаги по устранению неполадок:

    1. Проверьте все остальные условия, чтобы определить, какое конкретно условие равно False
    2. Сосредоточьтесь на решении конкретных проблемных условий согласно приведённым ниже рекомендациям
    3. Убедитесь, что спецификация коннектора настроена корректно

    ConnectorClassReady = False

    Указывает, что класс коннектора не существует или является недействительным.

    Шаги по устранению неполадок:

    1. Подтвердите, что ConnectorClass существует:
      kubectl get connectorclass <class-name>
    2. Проверьте правильность конфигурации коннектора:
      kubectl get connector <connector-name> -n <namespace> -o jsonpath='{.spec.connectorClassName}'
    3. Проверьте определения connectorclass:
      kubectl get connectorclass <class-name> -o yaml

    Распространённые причины:

    • Ошибка в написании имени ConnectorClass
    • ConnectorClass не установлен
    • Использование ConnectorClass из другого namespace (ConnectorClasses имеют область действия кластера)

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

    conditions:
      - lastTransitionTime: "2023-05-15T10:25:30Z"
        message: "connectorclass.connectors.alauda.io \"git\" not found"
        reason: ConnectorClassNotFound
        status: "False"
        type: ConnectorClassReady

    Решение: Установите отсутствующий ConnectorClass или исправьте имя класса в конфигурации коннектора.

    SecretReady = False

    Указывает на проблемы с секретом аутентификации.

    Шаги по устранению неполадок:

    1. Подтвердите, что Secret существует:
      kubectl get secret <secret-name> -n <namespace>
    2. Проверьте, что у Secret правильный тип для метода аутентификации:
      kubectl get secret <secret-name> -n <namespace> -o jsonpath='{.type}'
    3. Проверьте, что данные Secret содержат необходимые поля:
      kubectl get secret <secret-name> -n <namespace> -o yaml

    Распространённые причины:

    • Секрет не существует
    • Секрет находится в неправильном namespace
    • Неправильный тип секрета
    • Отсутствуют необходимые поля в секрете
    • RBAC ограничивает доступ к секрету

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

    conditions:
      - lastTransitionTime: "2023-05-15T10:27:15Z"
        message: "secrets \"my-git-creds\" not found"
        reason: SecretNotFound
        status: "False"
        type: SecretReady

    Решение: Создайте отсутствующий секрет или исправьте ссылку на секрет в конфигурации коннектора.

    LivenessReady = False

    Указывает, что целевой сервис недоступен.

    Шаги по устранению неполадок:

    1. Проверьте правильность адреса коннектора:
      kubectl get connector <connector-name> -n <namespace> -o jsonpath='{.spec.address}'
    2. Проверьте подключение к целевому сервису:
      kubectl run -it --rm --restart=Never curl --image=curlimages/curl -n <namespace> -- curl -v <address>
    3. Проверьте сетевые политики:
      kubectl get networkpolicies -n connectors-system

    Распространённые причины:

    • Неправильный адрес цели
    • Целевой сервис не работает
    • Сетевые политики блокируют доступ
    • Проблемы с разрешением DNS
    • Брандмауэр блокирует соединения

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

    conditions:
      - lastTransitionTime: "2023-05-15T10:29:00Z"
        message: "Get \"https://github.invalid.com\": dial tcp: lookup github.invalid.com: no such host"
        reason: ConnectionFailed
        status: "False"
        type: LivenessReady

    Решение: Обновите адрес на действительный и доступный URL или устраните проблемы с сетевым подключением.

    AuthReady = False

    Указывает на ошибку аутентификации с предоставленными учетными данными.

    Шаги по устранению неполадок:

    1. Проверьте учетные данные в секрете:
      kubectl get secret <secret-name> -n <namespace> -o jsonpath='{.data.username}' | base64 -d
      kubectl get secret <secret-name> -n <namespace> -o jsonpath='{.data.password}' | base64 -d
    2. Проверьте правильность параметров аутентификации:
      kubectl get connector <connector-name> -n <namespace> -o jsonpath='{.spec.auth}'
    3. Выполните ручное тестирование аутентификации:
      kubectl run -it --rm --restart=Never curl --image=curlimages/curl -n <namespace> -- \
        curl -v -u <username>:<password> <address>

    Распространённые причины:

    • Неправильное имя пользователя или пароль
    • Истёкший токен
    • Недостаточные права доступа
    • Несовпадение типа аутентификации
    • Репозиторий/ресурс не существует

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

    conditions:
      - lastTransitionTime: "2023-05-15T10:32:20Z"
        message: "Authentication failed: status code 401"
        reason: AuthenticationFailed
        status: "False"
        type: AuthReady

    Решение: Обновите учетные данные в секрете или убедитесь, что пользователь имеет необходимые права доступа к ресурсу.

    ProxyServiceReady = False

    Указывает на проблемы с конфигурацией прокси-сервиса.

    Шаги по устранению неполадок:

    1. Проверьте, существует ли прокси-сервис:
      kubectl get service -n connectors-system -l app.kubernetes.io/name=connectors-proxy
    2. Проверьте, что у прокси-сервиса есть endpoints:
      kubectl get endpoints -n connectors-system connectors-proxy-service
    3. Проверьте статус прокси-подов:
      kubectl get pods -n connectors-system -l app.kubernetes.io/name=connectors-proxy

    Распространённые причины:

    • Прокси-сервис не развернут
    • Прокси-поды не запущены
    • Ошибка конфигурации сервиса
    • Сетевые политики блокируют доступ к прокси
    • Ограничения ресурсов (CPU/память)

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

    conditions:
      - lastTransitionTime: "2023-05-15T10:35:10Z"
        message: "Service connectors-proxy-service not found in namespace connectors-system"
        reason: ProxyServiceNotFound
        status: "False"
        type: ProxyServiceReady

    Решение: Разверните компонент connectors-proxy или исправьте конфигурацию сервиса.

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

    Проверка логов компонентов

    Для более глубокой диагностики проверьте логи компонентов контроллера:

    # Логи controller manager
    kubectl logs -n connectors-system -l app.kubernetes.io/name=connectors-controller-manager
    
    # Логи прокси-сервиса
    kubectl logs -n connectors-system -l app.kubernetes.io/name=connectors-proxy
    
    # Логи CSI драйвера
    kubectl logs -n connectors-system -l app.kubernetes.io/name=connectors-csi

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