Kubespray в автономной (или локальной) среде

Kubespray в автономной (или локальной) среде

Я новичок в 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, который подписал ваш сертификат сервера реестра.

Связанный контент