Назад | Перейти на главную страницу

Таймауты Kubernetes CluterIssuer Challenge

Настройка: DigitalOcean K8S Cluster с 2 узлами и 1 Ingress-NGINX LoadBalancer (без специальной конфигурации)

Мне было интересно, почему запросы сертификатов терпят неудачу и в журналах Challenge было обнаружено, что запрос GET самопроверки выполняется по таймауту:

 Waiting for http-01 challenge propagation: failed to perform self check GET request 'http...'
 ... dial tcp PUBLIC_LOADBALANCE_IP:80 connect: connection timed out

При ближайшем рассмотрении проблема кажется, что когда я пытаюсь сделать запросы на завиток на мой общедоступный IP-адрес LoadBalancer изнутри работающих модулей, только модули, запущенные на узле, который в данный момент LoadBalancer не указывает на может делать успешные запросы. Для всех остальных запросов от модулей, работающих на другом узле, истекает время ожидания.

Любой совет?

Редактировать:

Покопавшись дальше, я обнаружил, что установка externalTrafficPolicy в службе ingress-nginx из

externalTrafficPolicy: Local

к

externalTrafficPolicy: Cluster

похоже, решает проблему. Теперь запросы от всех модулей - независимо от того, на каком узле они работают - могут успешно отправлять запросы. Это приводит меня к другому вопросу:

Я что-то упустил, чтобы уладить это? Я так думаю, иначе я не понимаю, почему ни документация, ни какие-либо руководства не дают намеков на эту потенциальную проблему.

Вы ничего не пропустили во время настройки.

Есть выпуск сообщает об этом поведении, и это очень похоже на то, что вы описали. К сожалению, проблема все еще открыта, поэтому решения этой проблемы пока нет.

Единственная возможность - использовать обходной путь для изменения externalTrafficPolicy из Local к Cluster.