Som OS og minikube vm-driver
blev ikke nævnt, jeg antager, at det er --vm-driver=virtualbox
fordi det nok er det mest almindelige tilfælde. Hvis du bruger noget andet, skal du justere denne løsning i henhold til din konfiguration.
Forklaring:
127.0.0.1
er en localhost
(lo0
) grænseflade IP-adresse. Noder, værter og pods har deres egne lokale værtsgrænseflader, og de er ikke forbundet med hinanden.
Din mysql-server
kører på værtsmaskinen og kan ikke tilgås ved hjælp af localhost
(eller det er IP-området) inde fra en minikube-klyngepod eller inde fra minikube vm.
Løsning:
-
Du bør have et netværk mellem minikube VM og værten. Standard NAT-netværk i Virtualbox er ikke godt til det, så det er bedre at oprette et andet værtsnetværk. Lad os oprette ekstra værtsnetværk i Virtualbox UI med navnet
vmnet2
og IP-område192.168.77.1/24
. Du behøver ikke at aktivere DHCP for det netværk. -
Du skal konfigurere mysql til at lytte på grænsefladen vmnet2 eller ip
192.168.77.1
som som standard bruges til værtsmaskinen. Tjek, om det er tilgængeligt fra værten:
mysql -h 192.168.77.1 -u root -p
-
For at tilslutte dette netværk til minikube VM skal --host-only-cidr-nøgle bruges. Forskellig type
vm-driver
bruge forskellige cli-muligheder til dette formål. Tjekminikube start --help
produktion. Altså forvirtualbox
det vil se sådan ud: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
Jeg skrev andre mest almindelige cli-muligheder bare for nemheds skyld.
MinikubeVM får følgende IP-adresse:
192.168.77.100
(i hvert fald første gang. )Du kan tjekke det ved at brugeminikube ssh
og derefterifconfig
kommandoer. -
Sidste del - vi skal oprette en Service og Endpoint for det inde i
minikube
klynge:
kubectl apply -f mysql-service.yaml
Her er indholdet af mysql-service.yaml
fil:
---
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 kan vi bruge
mysql-service
navn og port3306
inde i en hvilken som helst pod i denne klynge som et destinationspunkt.