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:
-
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-Bereich192.168.77.1/24
. Sie müssen DHCP für dieses Netzwerk nicht aktivieren. -
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
-
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 dieminikube start --help
Ausgang. Also fürvirtualbox
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 mitminikube ssh
überprüfen und dannifconfig
Befehle. -
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
- Nun können wir den
mysql-service
verwenden Name und Port3306
in jedem Pod dieses Clusters als Zielpunkt.