Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Greifen Sie von minikube aus auf mysql zu, das auf localhost ausgeführt wird

Als OS und minikube vm-driver nicht erwähnt wurde, nehme ich an, es ist --vm-driver=virtualbox weil es wahrscheinlich der häufigste Fall ist. Wenn Sie etwas anderes verwenden, müssen Sie diese Lösung entsprechend Ihrer Konfiguration anpassen.

Erklärung:

127.0.0.1 ist ein localhost (lo0 ) IP-Adresse der Schnittstelle. Knoten, Hosts und Pods haben ihre eigenen Localhost-Schnittstellen und sind nicht miteinander verbunden.

Ihr mysql-server läuft auf dem Host-Rechner und kann nicht mit localhost aufgerufen werden (oder dessen IP-Bereich) von innerhalb eines Minikube-Cluster-Pods oder von innerhalb von Minikube vm.

Lösung:

  1. Sie sollten ein Netzwerk zwischen der Minikube-VM und dem Host haben. Das Standard-NAT-Netzwerk in Virtualbox ist dafür nicht gut, daher ist es besser, ein weiteres Host-Only-Netzwerk zu erstellen. Lassen Sie uns erstellen zusätzliches Host-Only-Netzwerk in der Virtualbox-Benutzeroberfläche mit dem Namen vmnet2 und IP-Bereich 192.168.77.1/24 . Sie müssen DHCP für dieses Netzwerk nicht aktivieren.

  2. Sie müssen mysql so konfigurieren, dass es auf der Schnittstelle vmnet2 oder ip 192.168.77.1 lauscht die standardmäßig für den Hostcomputer verwendet wird. Prüfen Sie, ob vom Host aus darauf zugegriffen werden kann:

mysql -h 192.168.77.1 -u root -p 
  1. Um dieses Netzwerk an die Minikube-VM anzuhängen, sollte der Schlüssel „--host-only-cidr“ verwendet werden. Andere Art von vm-driver Verwenden Sie zu diesem Zweck verschiedene CLI-Optionen. Überprüfen Sie die minikube start --help Ausgang. Also für virtualbox es sieht wie folgt aus:

    minikube start --cpus 2 \
                   --memory 2048 \
                   --disk-size 20g \
                   --vm-driver virtualbox \
                   --network-plugin flannel \
                   --kubernetes-version v1.12.2 \
                   --host-only-cidr 192.168.77.1/24
    

    Ich habe andere gebräuchliche CLI-Optionen nur der Einfachheit halber geschrieben.

    MinikubeVM erhält die folgende IP-Adresse:192.168.77.100 (zumindest beim ersten Mal. )Sie können es mit minikube ssh überprüfen und dann ifconfig Befehle.

  2. Letzter Teil – wir müssen einen Dienst und einen Endpunkt dafür innerhalb des minikube erstellen Cluster:

kubectl apply -f mysql-service.yaml

Hier ist ein Inhalt der mysql-service.yaml Datei:

---
apiVersion: v1
kind: Service
metadata:
   name: mysql-service
spec:
   type: ClusterIP
   ports:
   - protocol: TCP
     port: 3306
     targetPort: 3306
---
apiVersion: v1
kind: Endpoints
metadata:
  name: mysql-service
subsets:
  - addresses:
      - ip: 192.168.77.1
    ports:
      - port: 3306
  1. Nun können wir den mysql-service verwenden Name und Port 3306 in jedem Pod dieses Clusters als Zielpunkt.