Я новичок в k8s и kubespray.
Моя цель — построить кластер k8s в локальной среде. С EC2, имеющими публичные IP и доступ в Интернет, все было хорошо. Но с более сложными ограничениями я застрял. Ниже приведено мое ограничение.
- 1 бастион с публичным IP и доступом в интернет
- n узлов, которые не имеют ни публичного IP, ни доступа в Интернет
В соответствии сдокумент kubespray, требуется довольно много настроек. Но я считаю, что поскольку у bastion есть полный доступ в интернет, может быть простой способ построить кластер k8s с kubespray.
Есть ли какие-нибудь блоги или пошаговые инструкции, как это сделать?
решение1
Насколько я понимаю, если ваш бастион может получить доступ к публичным реестрам и репозиториям, то вы можете установить какой-нибудь сервер Squid, проксирующий запросы от имени ваших узлов Kubernetes.
В этом случае это уже не отключенное развертывание, и мы можем задать переменные http_proxy
https_proxy
и no_proxy
в group_vars/all.yml
, используя этот прокси-сервер для извлечения активов из их исходного места.
Попробуйте что-то вроде apt-get install squid
или dnf install squid
. Базовый squid.conf может выглядеть следующим образом:
http_port 3128
cache_log /var/log/squid/cache.log
cache_mem 256 MB
cache_dir aufs /var/spool/squid 10240 16 256
maximum_object_size 1024 MB
cache_effective_group proxy
hosts_file /etc/hosts
logfile_rotate 4
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
access_log /var/log/squid/access.log combined
coredump_dir /var/spool/squid
error_directory /usr/share/squid/errors/en
http_access allow all
http_reply_access allow all
cache allow all
icp_access allow all
Проверьте подключение с одного из узлов Kubernetes:
# curl -vvv --proxy http://10.42.44.100:3128/ https://perdu.com
...
* Connected to 10.42.44.100 (10.42.44.100) port 3128 (#0)
...
* Establish HTTP proxy tunnel to perdu.com:443
...
Теперь убедитесь, что ваш инвентарь Kubespray устанавливает правильные переменные с помощью этого прокси. Конфигурация Container Runtime и менеджера пакетов ОС будут использовать их.
Если настройка этого прокси-сервера по какой-то причине не подходит, вам придется зеркалировать все изображения и файлы, упомянутые в этом offline-environment.md
документе.
Может быть, настроить сервер Nginx для двоичных файлов и файлов kubectl / etcd / ... и запустить контейнер docker-registry, зеркалируя эти образы. Хотя имейте в виду, что среда выполнения вашего контейнера должна быть правильно настроена, игнорируя небезопасные ошибки реестра (дополнительные переменные Kubespray для установки), или ваша ОС должна доверять CA, который подписал ваш сертификат сервера реестра.