Load-Balancer et Initialisation (Keepalived et HAProxy) [OK]
Installation et Configuration de HAProxy :
Sur chaque master node
Installation
sudo apt -y install haproxy
sudo systemctl enable --now haproxy
Configuration :
mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak && sudo nano /etc/haproxy/haproxy.cfg
global
maxconn 4096
log /dev/log local0
daemon
stats socket /var/lib/haproxy/stats
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
listen stats
bind *:9000
stats enable
stats uri /stats
stats refresh 2s
stats auth admin:statspasswordforhaproxy
# API Kubernetes : 6443 en TCP (TLS passthrough)
listen kubernetes-apiserver-https
bind *:6443
mode tcp
option log-health-checks
timeout client 10m
timeout server 10m
balance roundrobin'> /etc/haproxy/haproxy.cfg
server k8s-m1 192.168.20.240:6443 check
server k8s-m2 192.168.20.241:6443 check
server k8s-m3 192.168.20.242:6443 check
Redémarrage de HAProxy pour appliquer les changements sudo systemctl restart haproxy
Test si on écoute bien sur le port 6443 sudo ss -lntp | grep 6443
Installation et Configuration de Keepalived :
Sur chaque master node
Installation
sudo apt -y install keepalived
Configuration
Pensez a adapter la configuration en fonction de l'hote en baissant la priorité et en modifiant le nom de l'interface si nécéssaire.
sudo nano /etc/keepalived/keepalived.conf
vrrp_script chk_haproxy {
script "pidof haproxy"
interval 2
weight -50
}
vrrp_instance VI_API {
state BACKUP
interface ens18 # <-- remplace par ton NIC
virtual_router_id 51
priority 150 # M1:150, M2:120, M3:100
advert_int 1
authentication {
auth_type PASS
auth_pass changeMe
}
virtual_ipaddress {
192.168.20.100/24 dev ens18 # <-- ton VIP
}
track_script { chk_haproxy }
# Bascules ARP propres (options documentées dans le man keepalived)
garp_master_delay 1
garp_master_repeat 5
garp_lower_prio_no_advert
}
Activation et vérification de l'installation :
sudo systemctl enable --now keepalived
journalctl -u keepalived -n 50 --no-pager
ip a | grep -A2 192.168.20.100
Ont peut également vérifié que le port fonctionne bien :
nc -vz 192.168.20.100 6443
Initialisation du Cluster Kubernetes :
sudo kubeadm init \
--control-plane-endpoint 192.168.20.100:6443 \
--pod-network-cidr 10.244.0.0/16 \
--upload-certs
Une fois le conteneur initialisé, mettez vous avec votre utilisateur classique et executer ça (comme recommandé suite a l'installation) :
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Et si vous êtes en "root" alors cette commande ci : export KUBECONFIG=/etc/kubernetes/admin.conf