Hallo, ich habe Kubernates installiert und konfiguriert. Ich habe es sowohl mit Minikube als auch mit Kubeadm versucht. Was ich installiert habe: Flannel, Nginx-Ingress-Controller, MetalLB und dann den Nginx-Ingress-Controller-Dienst als LoadBalancer eingerichtet.
Ich erhalte immer die Fehlermeldung 502 Bad Gateway, wenn ich versuche, eine einfache WordPress-App verfügbar zu machen (mithilfe von clusterIp oder sogar mit nodePort).
Betriebssystem: Ubuntu 20.04 LTS, installiertes Docker-CE, Kubeadm und Kubelt (offizielles Tutorial der Kubernates-Site)
Installationsverfahrenich habe es befolgt: Kube init:
kubeadm init --pod-network-cidr=10.244.0.0/16
kubectl taint nodes --all node-role.kubernetes.io/master-
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Flanell:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
nginx
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/baremetal/deploy.yaml
metallb: Vor-Ort-Tutorial absolviert
Ich habe versucht, den Ingress-Nginx-Controller-Dienst in LoadBalancer zu ändern und die externe IP hinzuzufügen, aber es ändert sich nichts
hier sind meine YAMLs: Service
apiVersion: v1
kind: Service
metadata:
labels:
appcluster: kubernetes
app: wordpress
name: wordpress-service
spec:
ports:
- port: 80
targetPort: 80
name: http-port
selector:
app: wordpress
type: ClusterIP
Eintritt
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: wordpress-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- host: ethernial.com
http:
paths:
- path: /?(.*)
backend:
serviceName: wordpress-service
servicePort: 80
Antwort1
Dank @Jakub habe ich vergessen, metalLB zu konfigurieren (eine Konfigurationskarte zu erstellen), dann habe ich ingress-nginx-controller so eingestellt, dass loadBalancer perfekt funktioniert
Antwort2
Nur um klarzustellen, was hier falsch war.
Wie in MetalLB erwähntDokumentation:
MetalLB bleibt im Leerlauf, bis es konfiguriert wird. Dies wird erreicht, indem eine Konfigurationszuordnung erstellt und im selben Namespace (Metallb-System) wie die Bereitstellung bereitgestellt wird.
Es gibt ein BeispielLayer 2-Konfiguration.
Der Layer-2-Modus ist am einfachsten zu konfigurieren: In vielen Fällen benötigen Sie keine protokollspezifische Konfiguration, sondern nur IP-Adressen.
Im Layer-2-Modus müssen die IPs nicht an die Netzwerkschnittstellen Ihrer Worker-Knoten gebunden sein. Er funktioniert, indem er direkt auf ARP-Anfragen in Ihrem lokalen Netzwerk antwortet, um den Clients die MAC-Adresse des Computers mitzuteilen.
Beispielsweise gibt die folgende Konfiguration MetalLB die Kontrolle über IPs von 192.168.1.240 bis 192.168.1.250 und konfiguriert den Layer-2-Modus:
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- 192.168.1.240-192.168.1.250
Zusätzlich gibt es ein tolles Tutorial überMittelDarin wird erklärt, wie man es auf Minikube von Grund auf einrichtet.
MetalLB enthält zwei Informationen, ein Protokoll und einen IP-Adressbereich. In dieser Konfiguration wird MetalLB angewiesen, Adressen ab 192.168.99.95/105 zu vergeben, unserem vordefinierten Bereich in Bezug auf die Knoten-IP. In unserem Fall verwenden wir den Befehl „minikube ip“, um die IP unseres Minikubes zu erhalten, und legen den Bereich entsprechend in der Konfigurationsdatei fest.