Puncte:1

Accesarea serviciilor Kubernetes în cluster din afara rețelei locale - Bare Metal

drapel in

Rulez un mediu simplu de „înaltă disponibilitate” multi-master, cu 2 master și 2 lucrători, precum și un alt VM cu HAProxy care servește ca Load Balancer extern.

Întrebarea mea este: este posibil să accesez serviciile (tabloul de bord, ngnix, mysql (în special mysql), etc...) din afara clusterului, expunându-le în rețea cu această setare pe care o rulez?

Am încercat să folosesc MetalLB în acest mediu pentru a expune serviciile ca LoadBalancer, dar nu pare să funcționeze și, din moment ce sunt cam nou în Kubernetes, nu mi-am putut da seama de ce.

Editare: Am început să funcționeze acum, după sugestia @c4f4t0r, în loc de un echilibrator de încărcare HAProxy extern, aceeași VM a devenit un al treilea nod principal și, la fel ca celelalte, acum rulează fiecare o instanță internă a HAProxy și Keepalived, în timp ce VM-ul care obișnuia să fie LB extern este acum un master al punctului final pentru ca ceilalți să se alăture clusterului, MetalLB rulând în interiorul clusterului cu controlerul de intrare nginx care conduce cererile către serviciul care a fost solicitat.



>>> Mai jos sunt pașii pe care i-am urmat pentru a crea mediul, precum și toată configurația folosită în configurare.



Configurați un cluster Kubernetes foarte disponibil folosind kubeadm

Urmați această documentație pentru a configura un cluster Kubernetes foarte disponibil folosind Ubuntu 20.04 LTS.

Această documentație vă ghidează în configurarea unui cluster cu două noduri master, un nod de lucru și un nod de echilibrare a încărcăturii folosind HAProxy.

Mediu bare-metal

Rol FQDN IP OS RAM Procesor
Echilibrarea greutății loadbalancer.example.com 192.168.44.100 Ubuntu 21.04 1G 1
Maestru kmaster1.example.com 10.84.44.51 Ubuntu 21.04 2G 2
Maestru kmaster2.example.com 192.168.44.50 Ubuntu 21.04 2G 2
Muncitor kworker1.example.com 10.84.44.50 Ubuntu 21.04 2G 2
Muncitor kworker2.example.com 192.168.44.51 Ubuntu 21.04 2G 2
  • Parola pentru rădăcină cont pe toate aceste mașini virtuale este kubeadmin
  • Efectuați toate comenzile ca utilizator root, dacă nu se specifică altfel

Cerințe preliminare

Dacă doriți să încercați acest lucru într-un mediu virtualizat pe stația dvs. de lucru

  • Virtualbox instalat
  • Mașina gazdă are cel puțin 8 nuclee
  • Mașina gazdă are cel puțin 8G de memorie

Configurați nodul de echilibrare a sarcinii

Instalați Haproxy
apt update && apt install -y haproxy
Configurați haproxy

Adăugați rândurile de mai jos la /etc/haproxy/haproxy.cfg

frontend kubernetes-frontend
    lega 192.168.44.100:6443
    modul tcp
    opțiunea tcplog
    default_backend kubernetes-backend

backend kubernetes-backend
    modul tcp
    opțiunea tcp-check
    echilibru roundrobin
    server kmaster1 10.84.44.51:6443 verifica cădere 3 creștere 2
    server kmaster2 192.168.44.50:6443 verifica toamna 3 ridica 2
Reporniți serviciul haproxy
systemctl reporniți haproxy

Pe toate nodurile Kubernetes (kmaster1, kmaster2, kworker1)

Dezactivați firewall
ufw dezactivare
Dezactivați schimbul
swapoff -a; sed -i '/swap/d' /etc/fstab
Actualizați setările sysctl pentru rețele Kubernetes
pisică >>/etc/sysctl.d/kubernetes.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
Instalați motorul docker
{
  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
}

Configurare Kubernetes

Adăugați depozitul 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
}
Instalați componentele Kubernetes
actualizare apt && instalare apt -y kubeadm=1.19.2-00 kubelet=1.19.2-00 kubectl=1.19.2-00

Pe oricare dintre nodurile master Kubernetes (de exemplu: kmaster1)

Inițializați clusterul Kubernetes
kubeadm init --control-plane-endpoint="192.168.44.100:6443" --upload-certs

Copiați comenzile pentru a vă alătura altor noduri master și noduri de lucru.

Implementează Stambă rețea (folosesc Weave în loc de Calico)
kubectl --kubeconfig=/etc/kubernetes/admin.conf create -f https://docs.projectcalico.org/v3.15/manifests/calico.yaml

Conectați alte noduri la cluster (kmaster2 și kworker1)

Utilizați comenzile respective kubeadm join pe care le-ați copiat din rezultatul comenzii kubeadm init de pe primul master.

IMPORTANT: De asemenea, trebuie să transmiteți --apiserver-advertise-address la comanda join atunci când vă alăturați celuilalt nod master.

Puncte:1
drapel nl

Dacă utilizați metalb, cred că nu trebuie să aveți un vm extern cu haproxy, puteți instala un controler de intrare în kubernetes și puteți schimba tipul de serviciu al controlerului de intrare la LoadBalancer.

Acum veți avea un ip extern în lan-ul dvs. pentru a vă accesa serviciul local prin ip-ul controlerului de intrare.

(Internet) -> (Router) -> Nat -> Metalb-Ip -> Ingress-controller -> k8s-service

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.