Я создал кластер AKS после процедура документации. Я создал pod внутри кластера и при подключении к ним tty (kubectl exec -it pod-name -- /bin/bash
), понял, что у контейнеров нет доступа к ресурсам за пределами Azure: я не могу проверить связь с 8.8.8.8, я не могу разрешить полное доменное имя общедоступных веб-сайтов.
Я не могу найти никакой документации по Azure, в которой четко указано, что модуль должен иметь доступ к сети за пределами кластера. Я могу найти этот тип документация где мы можем прочитать, что разрешение исходящего потока к общедоступному источнику должно быть поведением по умолчанию (но на практике я вижу, что это не так), я нашел множество сообщений в блогах, объясняющих, как использовать статические IP-адреса для моих k8s, но это не то, что я хочу знать.
Что я хочу знать: разрешает ли исходящий трафик по умолчанию кластер Azure Kubernetes по умолчанию или я сделал что-то не так при установке?
Я думаю, что отправка эхо-запроса ICMP на удаленный хост - не лучший способ проверить, можно ли без ограничений отправлять исходящий трафик во внешний мир. Попробуйте использовать эти команды:
kubectl run -it --rm aks-ip --image=debian --generator=run-pod/v1
apt-get update && apt-get install curl -y
curl -s checkip.dyndns.org
как объяснено Вот, в репозитории Github документации AKS.
Для меня он общается без каких-либо проблем с общедоступными адресами DNS.
Вы также можете попробовать заменить стандартный networkPlugin «kubenet» на Azure CNI, если вы в основном подключаетесь из модулей к ресурсам вне кластера (отметьте этот ресурс по выбору правильной сетевой модели для вашего кластера AKS).
Я раньше видел проблемы с пингом в контейнерах K8s, могу curl http://www.google.com
в контейнере на моем кластере AKS проблем нет. Потребуется развернуть еще один контейнер с соответствующими сетевыми инструментами для дальнейшего устранения неполадок. Попробую сегодня позже, если позволит время.
Не нашел реального ответа на вопрос, но нашел способ заставить его работать: в документации Azure указано, что если в кластере еще не создан LoadBalancer, the nodes have no instance level Public IP address. Azure translates the outbound flow to a public source IP address that is not configurable or deterministic.
. Мне не удалось увидеть исходящий трафик, разрешенный для выхода в Интернет ...
Но после создания LoadBalancer, даже не в том же пространстве имен !, каждому модулю каждого пространства имен удается видеть, что их трафик направляется в Интернет.
Так что нет четкого ответа (почему исходящий трафик моих модулей не был перенаправлен в Интернет без LoadBalancer вопреки заявлению в документации), но мне удается увидеть маршрутизируемый трафик после создания LoadBalancer (даже в другом пространстве имен, чем модули ..) . Странный.