Загрузка данных


Это критический этап для обеспечения отказоустойчивости (HA). Теперь мы работаем только на первых трех нодах (k8s-srv1, k8s-srv2, k8s-srv3), так как воркеры (srv4-5) не участвуют в балансировке API.
## Шаг 1: Установка пакетов (Пункт a)
Выполни на k8s-srv1, k8s-srv2, k8s-srv3:

sudo apt-get update
sudo apt-get install -y keepalived haproxy

------------------------------
## Шаг 2: Настройка Keepalived (Пункт c)
Создай файл /etc/keepalived/keepalived.conf. Внимание: приоритеты и роли различаются для каждой ноды.
Для k8s-srv1:

vrrp_instance VI_1 {
    state MASTER
    interface eth0          # проверь имя интерфейса через ip a, может быть ens18
    virtual_router_id 51
    priority 110
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 42
    }
    virtual_ipaddress {
        192.168.0.253/24
    }
}


* Для k8s-srv2: измени state на BACKUP и priority на 105.
* Для k8s-srv3: измени state на BACKUP и priority на 100.

Запуск: sudo systemctl enable --now keepalived
------------------------------
## Шаг 3: Настройка HAProxy (Пункт d)
На всех трех control-plane нодах конфиг /etc/haproxy/haproxy.cfg должен быть одинаковым:

global
    log /dev/log local0
    user haproxy
    group haproxy
    daemon

defaults
    log global
    mode tcp
    option tcplog
    timeout connect 5000
    timeout client 50000
    timeout server 50000

# d.i: Frontend на порту 7443
frontend k8s-api
    bind *:7443
    default_backend k8s-nodes

# d.ii: Backend с roundrobin по серверам на 6443
backend k8s-nodes
    balance roundrobin
    server k8s-srv1 192.168.0.201:6443 check
    server k8s-srv2 192.168.0.202:6443 check
    server k8s-srv3 192.168.0.203:6443 check

# d.iii: Статистика на порту 9000
listen stats
    bind *:9000
    mode http
    stats enable
    stats uri /haproxy_stats
    stats refresh 10s

Запуск: sudo systemctl enable --now haproxy
------------------------------
## Шаг 4: Настройка доступа с adm-pc (Пункт e)
Чтобы adm-pc мог открыть статистику по доменному имени haproxy.au-team.cloud, нужно сопоставить это имя с нашим VIP.

   1. На adm-pc (или на вашем DNS-сервере infra-srv1, если он уже настроен) добавьте запись в /etc/hosts:
   
   192.168.0.253 haproxy.au-team.cloud
   
   2. Теперь проверьте в браузере на adm-pc: http://haproxy.au-team.cloud:9000/haproxy_stats

------------------------------
## Как проверить работу HA?

   1. Проверка VIP: На k8s-srv1 введи ip a. Ты должен увидеть адрес 192.168.0.253 на сетевом интерфейсе.
   2. Тест отказа: Выключи k8s-srv1. Введи ip a на k8s-srv2 — VIP должен мгновенно "переехать" туда.
   3. Порт: Убедись, что порт 7443 слушается: ss -tulpn | grep 7443.

Все настроено? Если да, то теперь мы готовы к самому главному — kubeadm init через виртуальный IP!
Если возникли ошибки при старте haproxy (например, "cannot bind socket"), дай знать, возможно нужно подправить параметры ядра для разрешения binding нелокальных IP.