Я запускаю простую среду «высокой доступности» с несколькими мастерами на «голом железе» с 2 мастерами и 2 рабочими, а также еще одну виртуальную машину с HAProxy, выступающую в качестве внешнего балансировщика нагрузки.
Мой вопрос: можно ли получить доступ к службам (панель инструментов, ngnix, mysql (особенно mysql) и т. д.) из-за пределов кластера, выставив их в сеть с этой настройкой, которую я запускаю?
Я пытался использовать MetalLB в этой среде, чтобы представить службы как LoadBalancer, но, похоже, это не сработало, и, поскольку я новичок в Kubernetes, я не мог понять, почему.
Изменить: теперь все заработало, следуя предложению @c4f4t0r, вместо внешнего балансировщика нагрузки HAProxy эта же виртуальная машина стала третьим главным узлом, и, как и другие, теперь каждый из них запускает внутренний экземпляр HAProxy и Keepalived, в то время как виртуальная машина, которая раньше была внешней LB, теперь является мастером конечной точки для других, чтобы присоединиться к кластеру, при этом MetalLB работает внутри кластера с контроллером входа nginx, направляющим запросы к запрошенной службе.
>>> Ниже приведены шаги, которые я выполнил для создания среды, а также все конфигурации, используемые при установке.
Настройте высокодоступный кластер Kubernetes с помощью kubeadm
Следуйте этой документации, чтобы настроить высокодоступный кластер Kubernetes с помощью Убунту 20.04 ЛТС.
Эта документация поможет вам настроить кластер с двумя главными узлами, одним рабочим узлом и узлом балансировки нагрузки с использованием HAProxy.
Чистая среда
Роль |
полное доменное имя |
IP |
Операционные системы |
БАРАН |
ЦПУ |
Балансировщик нагрузки |
loadbalancer.example.com |
192.168.44.100 |
Убунту 21.04 |
1G |
1 |
Мастер |
kmaster1.example.com |
10.84.44.51 |
Убунту 21.04 |
2G |
2 |
Мастер |
kmaster2.example.com |
192.168.44.50 |
Убунту 21.04 |
2G |
2 |
Рабочий |
kworker1.example.com |
10.84.44.50 |
Убунту 21.04 |
2G |
2 |
Рабочий |
kworker2.example.com |
192.168.44.51 |
Убунту 21.04 |
2G |
2 |
- Пароль для корень учетная запись на всех этих виртуальных машинах кубеадмин
- Выполняйте все команды от имени пользователя root, если не указано иное.
Предпосылки
Если вы хотите попробовать это в виртуализированной среде на вашей рабочей станции
- Виртуальный бокс установлен
- Хост-машина имеет не менее 8 ядер
- Хост-компьютер имеет не менее 8 ГБ памяти
Настроить узел балансировки нагрузки
Установить Хапрокси
apt update && apt install -y haproxy
Настроить хапрокси
Добавьте следующие строки к /etc/haproxy/haproxy.cfg
внешний интерфейс kubernetes-frontend
привязать 192.168.44.100:6443
режим TCP
опция tcplog
default_backend kubernetes-бэкэнд
серверная часть kubernetes-backend
режим TCP
опция tcp-check
круговой баланс
сервер kmmaster1 10.84.44.51:6443 проверка падение 3 повышение 2
сервер kmaster2 192.168.44.50:6443 проверить падение 3 поднять 2
Перезапустите службу haproxy
systemctl перезапустить haproxy
На всех узлах kubernetes (kmaster1, kmaster2, kworker1)
Отключить брандмауэр
ufw отключить
Отключить своп
подкачка -а; sed -i '/swap/d' /etc/fstab
Обновите настройки sysctl для сети Kubernetes.
кошка >>/etc/sysctl.d/kubernetes.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --система
Установить докер-движок
{
apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-ключ добавить -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) стабильный"
apt update && apt install -y docker-ce containerd.io
}
Настройка Кубернетес
Добавить репозиторий Apt
{
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-ключ добавить -
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 (например, kmaster1)
Инициализировать кластер Kubernetes
kubeadm init --control-plane-endpoint="192.168.44.100:6443" --upload-certs
Скопируйте команды, чтобы присоединиться к другим главным узлам и рабочим узлам.
Развертывать Калико сеть (я использую Weave вместо Calico)
kubectl --kubeconfig=/etc/kubernetes/admin.conf create -f https://docs.projectcalico.org/v3.15/manifests/calico.yaml
Присоединить другие узлы к кластеру (kmaster2 и kworker1)
Используйте соответствующие команды соединения kubeadm, которые вы скопировали из выходных данных команды инициализации kubeadm на первом мастере.
ВАЖНО: вам также необходимо передать --apiserver-advertise-address команде соединения, когда вы присоединяетесь к другому главному узлу.