Настройка: 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
.