kubernetes: модули не могут подключиться к Интернету

Я не могу подключиться к Интернету из капсул. Мой кластер kubernetes находится за прокси.
Я уже установил /env/environment и /etc/systemd/system/docker.service.d/http_proxy.conf и подтвердил, что переменные среды (http_proxy, https_proxy, HTTP_PROXY, HTTPS_PROXY, no_proxy, NO_PROXY) верны. Но в стручке, когда попробовал echo $http_proxy, ответ пуст. Я также пробовал curl -I https://rubygems.org, но он вернул curl: (6) Could not resolve host: rubygems.org.
Я думаю, что pod неправильно принимает значения среды или что-то я забываю сделать то, что должен делать. Как мне это решить?

Я пробовал export http_proxy=http://xx.xx.xxx.xxx:xxxx; export https_proxy=....
После этого я попробовал еще раз curl -I https://rubygems.org и получил заголовок с 200.


person altblanc    schedule 03.09.2019    source источник
comment
Возможный дубликат https://stackoverflow.com/questions/53173487/how-to-set-proxy-settings-http-proxy-variables-for-kubernetes-v1-11-2-cluste   -  person char    schedule 03.09.2019
comment
Could not resolve host: rubygems.org - это проблема с DNS. Возможно, вы подключены к Интернету. Вы пробовали что-то вроде 8.8.8.8?   -  person suren    schedule 03.09.2019
comment
Я пробовал, но не могу определить хост. В Pod нет HTTP_PROXY и HTTPS_PROXY, поэтому похоже, что он использует то, что написано в /etc/resolv.conf.   -  person altblanc    schedule 09.09.2019


Ответы (1)


Я вижу, что у вас неправильное proxy.conf имя. Согласно официальной документации имя должно быть /etc/systemd/system/docker.service.d/http-proxy.conf, а не /etc/systemd/system/docker.service.d/http_proxy.conf.

Затем вы добавляете прокси, перезагружаете демон и перезапускаете докер, как указано в комментариях другой ответ

/etc/systemd/system/docker.service.d/http_proxy.conf:

Содержание:

    [Service]
    Environment="HTTP_PROXY=http://x.x.x:xxxx"
    Environment="HTTPS_PROXY=http://x.x.x.x:xxxx"

# systemctl daemon-reload
# systemctl restart docker

Или, согласно ответу @mk_ska, вы можете

добавьте параметр http_proxy на ваш компьютер Docker, чтобы пересылать пакеты из вложенного контейнера Pod через целевой прокси-сервер.

Для операционной системы на базе Ubuntu:

Добавьте запись export http_proxy = 'http: //:' в файл / etc / default / docker

Для операционной системы на базе Centos:

Добавьте запись export http_proxy = 'http: //:' в файл / etc / sysconfig / docker

После этого перезапустите службу Docker.

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

person Community    schedule 03.09.2019
comment
Я пробовал это сделать, но не могу решить проблему ... В поде вроде не наследуются переменные окружения. Также я обнаружил еще одну проблему (если я выставлю http_proxy, модули не смогут разрешить внутреннее имя сервера), поэтому я собираюсь закрыть этот вопрос и искать другой способ. В любом случае, спасибо за вашу помощь! ;) - person altblanc; 09.09.2019
comment
Вам необходимо использовать no_proxy для диапазонов IP-адресов вашего кластера. Вы не хотите, чтобы этот трафик проходил через ваш прокси - person Michael Quale; 06.12.2019