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
vmnet2
en 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.1
die 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-driver
gebruik hiervoor verschillende cli-opties. Controleer deminikube start --help
uitvoer. Dus voorvirtualbox
het 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/24
Ik 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 ssh
en danifconfig
commando's. -
Laatste deel - we moeten er een service en eindpunt voor maken in de
minikube
cluster:
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 poort3306
binnen een pod van dit cluster als een bestemmingspunt.