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
vmnet2
et 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.1
qui 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-driver
utilisez différentes options cli à cette fin. Vérifiez leminikube start --help
production. Donc, pourvirtualbox
il 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/24
J'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 ssh
puisifconfig
commandes. -
Dernière partie - nous devons créer un service et un point de terminaison pour celui-ci dans le
minikube
grappe :
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-service
nom et port3306
à l'intérieur de n'importe quel pod de ce cluster en tant que point de destination.