Доступ к службам Kubernetes в кластере из-за пределов локальной сети -Bare Metal

Я использую простую -металлическую многоцелевую -основную среду «высокой доступности» с 2 мастерами и 2 рабочими, а также в качестве другой виртуальной машины с HAProxy, выступающей в качестве внешнего балансировщика нагрузки.

Мой вопрос: :можно получить доступ к службам (приборной панели, ngnix, mysql (, особенно mysql )и т. д. )из-за пределов кластера, подвергая их воздействию сеть с этой настройкой, которую я запускаю?

Я пытался использовать MetalLB в этой среде, чтобы представить сервисы как LoadBalancer, но, похоже, это не сработало, и, поскольку я новичок в Kubernetes, я не мог понять, почему.

Изменить :Теперь все заработало, следуя совету @c4f4t0r, вместо внешнего балансировщика нагрузки HAProxy эта же виртуальная машина стала третьим главным узлом, и, как и другие, теперь каждая из них работает как внутренний экземпляр. HAProxy и Keepalived, в то время как виртуальная машина, которая раньше была внешней LB, теперь является мастером конечной точки для других, присоединяющихся к кластеру, при этом MetalLB работает внутри кластера с контроллером входа nginx, направляющим запросы к запрошенной службе.



>>> Ниже приведены шаги, которые я выполнил для создания среды, а также все конфигурации, используемые при установке.



Настройка высокодоступного кластера Kubernetes с помощью kubeadm

Следуйте этой документации, чтобы настроить высокодоступный кластер Kubernetes с помощью Ubuntu 20.04 LTS .

Эта документация поможет вам настроить кластер с двумя главными узлами, одним рабочим узлом и узлом балансировки нагрузки с использованием HAProxy.

Чистая -металлическая среда

Роль Полное доменное имя IP-адрес ОС ОЗУ ЦП
Балансировщик нагрузки loadbalancer.example.com 192.168.44.100 Ubuntu 21.04 1G 1
Master kmaster1.example.com 10.84.44.51 Ubuntu 21.04 2G 2
Master kmaster2.example.com 192.168.44.50 Ubuntu 21.04 2G 2
Worker kworker1.example.com 10.84.44.50 Ubuntu 21.04 2G 2
Рабочий kworker2.example.com 192.168.44.51 Ubuntu 21.04 2G 2
  • Пароль для root учетная запись на всех этих виртуальных машинах: kubeadmin
  • Выполняйте все команды от имени пользователя root, если не указано иное

Предварительные требования -

Если вы хотите попробовать это в виртуализированной среде на своей рабочей станции

  • Virtualbox установлен
  • Хост-компьютер имеет не менее 8 ядер
  • Хост-компьютер имеет не менее 8 ГБ памяти

Настройте узел балансировки нагрузки

Установите Haproxy
apt update && apt install -y haproxy
Настройте haproxy

Добавьте следующие строки в /etc/haproxy/haproxy.cfg

frontend kubernetes-frontend
    bind 192.168.44.100:6443
    mode tcp
    option tcplog
    default_backend kubernetes-backend

backend kubernetes-backend
    mode tcp
    option tcp-check
    balance roundrobin
    server kmaster1 10.84.44.51:6443 check fall 3 rise 2
    server kmaster2 192.168.44.50:6443 check fall 3 rise 2
Перезапустите службу haproxy
systemctl restart haproxy

Вкл. все узлы kubernetes (kmaster1, kmaster2, kworker1)

Отключить брандмауэр
ufw disable
Отключить подкачку
swapoff -a; sed -i '/swap/d' /etc/fstab
Обновить настройки sysctl для сети Kubernetes
cat >>/etc/sysctl.d/kubernetes.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
Установить механизм докера
{
  apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
  curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
  add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  apt update && apt install -y docker-ce containerd.io
}

Настройка Kubernetes

Добавить репозиторий Apt
{
  curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
  echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list
}
Установите компоненты Kubernetes
apt update && apt install -y kubeadm=1.19.2-00 kubelet=1.19.2-00 kubectl=1.19.2-00

На любом из главных узлов Kubernetes (Например, :kmmaster1)

Инициализируйте кластер Kubernetes
kubeadm init --control-plane-endpoint="192.168.44.100:6443" --upload-certs

Скопируйте команды, чтобы присоединиться к другим главным узлам и рабочим узлам.

Разверните Calico сеть (Я использую Weave вместо Calico)
kubectl --kubeconfig=/etc/kubernetes/admin.conf create -f https://docs.projectcalico.org/v3.15/manifests/calico.yaml

Присоедините другие узлы к кластеру (kmaster2 & kworker1)

Используйте соответствующие команды соединения kubeadm, которые вы скопировали из вывод команды kubeadm init на первом мастере.

ВАЖНО :Вам также необходимо передать --apiserver -рекламу адреса -в команду присоединения, когда вы присоединяетесь к другому главному узлу.

1
задан 16 November 2021 в 10:13
1 ответ

Если вы используете metalb, я думаю, вам не нужна внешняя виртуальная машина с haproxy, вы можете установить входной контроллер в kubernetes и изменить тип службы входного контроллера на LoadBalancer.

Теперь у вас будет внешний IP-адрес в вашей локальной сети для доступа к вашей локальной службе через IP-адрес входного контроллера.

(Internet) -> (Router) -> Nat -> Metalb-Ip -> Ingress-controller -> k8s-service
1
ответ дан 16 November 2021 в 14:50

Теги

Похожие вопросы