Som OS och minikube vm-driver
nämndes inte, jag antar att det är --vm-driver=virtualbox
eftersom det förmodligen är det vanligaste fallet. Om du använder något annat måste du justera denna lösning enligt din konfiguration.
Förklaring:
127.0.0.1
är en localhost
(lo0
) gränssnittets IP-adress. Noder, värdar och poddar har sina egna lokala värdgränssnitt och de är inte anslutna till varandra.
Din mysql-server
körs på värddatorn och kan inte nås med localhost
(eller det är IP-intervall) inifrån en minikube-klusterpod eller inifrån minikube vm.
Lösning:
-
Du bör ha ett nätverk mellan minikube VM och värden. Standard NAT-nätverk i Virtualbox är inte bra för det, så det är bättre att skapa ett annat värdnätverk. Låt oss skapa ytterligare värdnätverk i Virtualbox UI med namnet
vmnet2
och IP-intervall192.168.77.1/24
. Du behöver inte aktivera DHCP för det nätverket. -
Du måste konfigurera mysql för att lyssna på gränssnittet vmnet2 eller ip
192.168.77.1
som som standard används för värddatorn. Kontrollera om det är tillgängligt från värden:
mysql -h 192.168.77.1 -u root -p
-
För att ansluta detta nätverk till minikube VM bör --host-only-cidr-nyckel användas. Annan typ av
vm-driver
använd olika cli-alternativ för detta ändamål. Kontrolleraminikube start --help
produktion. Så, förvirtualbox
det kommer att se ut så här: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
Jag skrev andra vanligaste cli-alternativ bara för bekvämlighets skull.
MinikubeVM kommer att få följande IP-adress:
192.168.77.100
(åtminstone första gången. )Du kan kontrollera det medminikube ssh
och sedanifconfig
kommandon. -
Sista delen - vi måste skapa en tjänst och slutpunkt för den i
minikube
kluster:
kubectl apply -f mysql-service.yaml
Här är innehållet i 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 använda
mysql-service
namn och port3306
inuti valfri pod i detta kluster som en destinationspunkt.