Je suis en train d'exécuter une simple envirooment de "haute disponibilité" de métal à nu avec 2 maîtres et 2 travailleurs, ainsi qu'un autre VM avec Haproxy servant d'équilibreur de charge externe.
Ma question est la suivante: il est possible d'accéder aux services (tableau de bord, Ngnix, MySQL (en particulier MySQL), etc ...) de l'extérieur du cluster, les exposant au réseau avec cette configuration que je suis en cours d'exécution?
J'ai essayé d'utiliser Metallb dans cet environnement pour exposer les services en tant que LoadBalancer, mais cela ne semble pas fonctionner, et comme je suis un peu nouveau à Kubernettes, je ne pouvais pas comprendre pourquoi.
Edit: Vous devez travailler maintenant, suivi @ C4F4T0R Suggestion, au lieu d'un équilibreur de charge Haproxy externe, c'est-à-dire VM est devenu un tiers noeud maître et, ainsi que les autres, ils fonctionnent maintenant chacun une instance interne de haproxy et retiré, tandis que le VM qui était utilisé comme étant le fichier LB externe est maintenant un maître d'extrémité pour les autres à rejoindre le cluster, avec METALLB fonctionnant à l'intérieur du cluster avec NGINX Contrôleur d'entrée Amenant les demandes au service qui a été demandée.
Suivez cette documentation pour configurer un cluster Kubettes hautement disponible en utilisant buntu 20.04 LTS.
Cette documentation vous guide dans la configuration d'un cluster avec deux noeuds maîtres, un noeud ouvrier et un nœud d'équilibreur de charge en utilisant haproxy.
Rôle | Fqdn | Ip | Système d'exploitation | RAM | CPU |
---|---|---|---|---|---|
Équilibreur de chargement | loadbalancer.example.com | 192.168.44.100 | Ubuntu 21.04 | 1g | 1 |
Maître | kmaster1.example.com | 10.84.44.51 | Ubuntu 21.04 | 2g | 2 |
Maître | kmacer2.example.com | 192.168.44.50 | Ubuntu 21.04 | 2g | 2 |
Ouvrier | kworker1.example.com | 10.84.44.50 | Ubuntu 21.04 | 2g | 2 |
Ouvrier | kworker2.example.com | 192.168.44.51 | Ubuntu 21.04 | 2g | 2 |
- Mot de passe pour le compte root Compte sur toutes ces machines virtuelles est Kubeadmin
- Effectuez toutes les commandes en tant qu'utilisateur root, sauf indication contraire
Si vous voulez essayer cela dans un environnement virtualisé sur votre poste de travail
apt update && apt install -y haproxy
Ajouter les lignes ci-dessous à / etc/haproxy/haparroxy.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
systemctl restart haproxy
ufw disable
swapoff -a; sed -i '/swap/d' /etc/fstab
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
}
{
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
}
apt update && apt install -y kubeadm=1.19.2-00 kubelet=1.19.2-00 kubectl=1.19.2-00
kubeadm init --control-plane-endpoint="192.168.44.100:6443" --upload-certs
Copiez les commandes pour rejoindre d'autres nœuds maîtres et nœuds de travail.
kubectl --kubeconfig=/etc/kubernetes/admin.conf create -f https://docs.projectcalico.org/v3.15/manifests/calico.yaml
Utilisez les commandes de jointure Kubeadm respectives que vous avez copiées à partir de la sortie de la commande Kubeadm init sur le premier maître.
IMPORTANT: Vous devez également passer --APISERVER-Adresse de publicité à la commande de jointure lorsque vous rejoignez l'autre nœud maître.
Si vous utilisez metalb, je pense que vous n'avez pas besoin d'avoir une machine virtuelle externe avec Haproxy, vous pouvez installer un contrôleur d'entrée dans KubeNettes et modifier le type de service du contrôleur d'entrée vers Lockbalancer.
Vous aurez maintenant une adresse IP externe dans votre réseau local pour accéder à votre service local via l'IP du contrôleur d'entrée.
(Internet) -> (Router) -> Nat -> Metalb-Ip -> Ingress-controller -> k8s-service