Comme le système d'exploitation et minikube vm-driver n'a pas été mentionné, je suppose que c'est --vm-driver=virtualbox parce que c'est probablement le cas le plus courant. Si vous utilisez quelque chose de différent, vous devez ajuster cette solution en fonction de votre configuration.
Explication :
127.0.0.1 est un localhost (lo0 ) l'adresse IP de l'interface. Les nœuds, les hôtes et les pods ont leurs propres interfaces localhost et ils ne sont pas connectés les uns aux autres.
Votre mysql-server s'exécute sur la machine hôte et n'est pas accessible à l'aide de localhost (ou sa plage IP) depuis l'intérieur d'un pod de cluster minikube ou depuis l'intérieur de minikube vm.
Solution :
-
Vous devriez avoir un réseau entre minikube VM et l'hôte. Le réseau NAT par défaut dans Virtualbox n'est pas bon pour cela, il est donc préférable de créer un autre réseau hôte uniquement. créons réseau hôte uniquement supplémentaire dans l'interface utilisateur de Virtualbox avec le nom
vmnet2et plage IP192.168.77.1/24. Vous n'avez pas besoin d'activer DHCP pour ce réseau. -
Il faut configurer mysql pour écouter sur l'interface vmnet2 ou ip
192.168.77.1qui est utilisé par défaut pour la machine hôte. Vérifiez s'il est accessible depuis l'hébergeur :
mysql -h 192.168.77.1 -u root -p
-
Pour attacher ce réseau à la VM minikube, la clé --host-only-cidr doit être utilisée. Différents types de
vm-driverutilisez différentes options cli à cette fin. Vérifiez leminikube start --helpproduction. Donc, pourvirtualboxil ressemblera à ceci :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/24J'ai écrit d'autres options cli les plus courantes juste pour plus de commodité.
MinikubeVM obtiendra l'adresse IP suivante :
192.168.77.100(au moins la première fois. )Vous pouvez le vérifier en utilisantminikube sshpuisifconfigcommandes. -
Dernière partie - nous devons créer un service et un point de terminaison pour celui-ci dans le
minikubegrappe :
kubectl apply -f mysql-service.yaml
Voici un contenu du mysql-service.yaml fichier :
---
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
- Nous pouvons maintenant utiliser le
mysql-servicenom et port3306à l'intérieur de n'importe quel pod de ce cluster en tant que point de destination.