Come il sistema operativo e minikube vm-driver non è stato menzionato, presumo che sia --vm-driver=virtualbox perché è probabilmente il caso più comune. Se usi qualcosa di diverso devi adattare questa soluzione in base alla tua configurazione.
Spiegazione:
127.0.0.1 è un localhost (lo0 ) indirizzo IP dell'interfaccia. Nodi, host e pod hanno le proprie interfacce localhost e non sono collegati tra loro.
Il tuo mysql-server è in esecuzione sulla macchina Host e non può essere accessibile utilizzando il localhost (o è l'intervallo IP) dall'interno di un cluster pod minikube o dall'interno di minikube vm.
Soluzione:
-
Dovresti avere una rete tra minikube VM e l'host. La rete NAT predefinita in Virtualbox non va bene per questo, quindi è meglio creare un'altra rete solo host. creiamo rete solo host aggiuntiva nell'interfaccia utente di Virtualbox con il nome
vmnet2e intervallo IP192.168.77.1/24. Non è necessario abilitare DHCP per quella rete. -
Devi configurare mysql per ascoltare sull'interfaccia vmnet2 o ip
192.168.77.1che è utilizzato per impostazione predefinita per la macchina host. Controlla se è accessibile dall'host:
mysql -h 192.168.77.1 -u root -p
-
Per collegare questa rete a minikube VM è necessario utilizzare la chiave --host-only-cidr. Tipo diverso di
vm-driverutilizzare diverse opzioni cli per questo scopo. Controlla ilminikube start --helpproduzione. Quindi, pervirtualboxsarà simile al seguente: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/24Ho scritto altre opzioni cli più comuni solo per comodità.
MinikubeVM riceverà il seguente indirizzo IP:
192.168.77.100(almeno la prima volta. )Puoi verificarlo usandominikube sshe poiifconfigcomandi. -
Ultima parte:dobbiamo creare un servizio e un endpoint all'interno del
minikubegruppo:
kubectl apply -f mysql-service.yaml
Ecco un contenuto di mysql-service.yaml file:
---
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
- Ora possiamo usare il
mysql-servicenome e porta3306all'interno di qualsiasi pod di questo cluster come punto di destinazione.