Als het besturingssysteem en de minikube vm-driver niet werd genoemd, neem ik aan dat het --vm-driver=virtualbox . is omdat het waarschijnlijk het meest voorkomende geval is. Als u iets anders gebruikt, moet u deze oplossing aanpassen aan uw configuratie.
Uitleg:
127.0.0.1 is een localhost (lo0 ) interface IP-adres. Nodes, Hosts en Pods hebben hun eigen localhost-interfaces en zijn niet met elkaar verbonden.
Uw mysql-server draait op de hostmachine en is niet toegankelijk via de localhost (of het IP-bereik) vanuit een minikube-clusterpod of vanuit minikube vm.
Oplossing:
-
U moet een netwerk hebben tussen minikube VM en de host. Het standaard NAT-netwerk in Virtualbox is daar niet goed voor, dus het is beter om een ander host-only netwerk te maken. Laten we maken extra host-only netwerk in Virtualbox UI met de naam
vmnet2en IP-bereik192.168.77.1/24. U hoeft DHCP niet in te schakelen voor dat netwerk. -
U moet mysql configureren om te luisteren op de interface vmnet2 of ip
192.168.77.1die standaard wordt gebruikt voor de hostcomputer. Controleer of het toegankelijk is vanaf de host:
mysql -h 192.168.77.1 -u root -p
-
Om dit netwerk aan minikube VM te koppelen, moet --host-only-cidr key worden gebruikt. Ander type
vm-drivergebruik hiervoor verschillende cli-opties. Controleer deminikube start --helpuitvoer. Dus voorvirtualboxhet ziet er als volgt uit: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/24Ik heb voor het gemak andere meest voorkomende cli-opties geschreven.
MinikubeVM krijgt het volgende IP-adres:
192.168.77.100(tenminste de eerste keer. )Je kunt het controleren metminikube sshen danifconfigcommando's. -
Laatste deel - we moeten er een service en eindpunt voor maken in de
minikubecluster:
kubectl apply -f mysql-service.yaml
Hier is de inhoud van de mysql-service.yaml bestand:
---
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
- Nu kunnen we de
mysql-service. gebruiken naam en poort3306binnen een pod van dit cluster als een bestemmingspunt.