Kubernates vor Ort 502 Bad Gateway

Kubernates vor Ort 502 Bad Gateway

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.

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

verwandte Informationen