Je gère des services à Minikube et j'essaie de se connecter à MySQL en cours d'exécution sur localhost (127.0.0.1) sur le port 3306.
J'ai lu - ceci et essaye de créer service
et Endpoints
. Cependant, lorsque je spécifie 127.0.0.1
En tant que IP, il jette une erreur comme ci-dessous:
The Endpoints "mysql-service" is invalid: subsets[0].addresses[0].ip: Invalid value: "127.0.0.1": may not be in the loopback range (127.0.0.0/8)
mon déploiement est comme ci-dessous:
---
apiVersion: v1
kind: Service
metadata:
name: mysql-service
spec:
ports:
- protocol: TCP
port: 1443
targetPort: mysql
---
apiVersion: v1
kind: Endpoints
metadata:
name: mysql-service
subsets:
- addresses:
- ip: 127.0.0.1
ports:
- name: mysql
port: 3306
S'il vous plaît, aidez-moi à comprendre comment puis-je vous connecter à mysql
dB à partir de minikube
.
J'ai également essayé de remplacer 127.0.0.1
Avec la propriété intellectuelle publique de mon ordinateur (ne savez pas pourquoi) et la connexion a été expirée.
Toute aide ou guide vers la bonne direction est appréciée.
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 souvent. Si vous utilisez quelque chose de différent, vous devez ajuster cette solution en fonction de votre configuration.
127.0.0.1
est un localhost
(lo0
) Interface adresse IP. Les nœuds, les hôtes et les pods ont leurs propres interfaces localhost et elles ne sont pas connectées les unes aux autres.
Ton mysql-server
est en cours d'exécution sur la machine hôte et ne peut pas être accessible à l'aide de la plage localhost
(ou de la plage IP) de l'intérieur d'une gousse de cluster Minikube ou de l'intérieur Minikube VM.
Vous devriez avoir un réseau entre minikube VM et l'hôte. Par défaut NAT Network in VirtualBox n'est pas bon pour cela, il est donc préférable de créer un autre hôte uniquement. Réseau. Soyons Créer Réseau d'hôte supplémentaire uniquement dans VirtualBox UI avec le nom vmnet2
et gamme IP 192.168.77.1/24
. Vous n'avez pas besoin d'activer DHCP pour ce réseau.
Vous devez configurer MySQL pour écouter sur l'interface VMNET2 ou IP 192.168.77.1
qui est par défaut utilisé pour la machine hôte. Vérifiez si c'est accessible à partir de l'hôte:
mysql -h 192.168.77.1 -u root -p
Pour attacher ce réseau à MINIKUBE VM -HOST-SEUL-SEUL-CIDR doit être utilisé. Différent type de vm-driver
Utilisez différentes options CLI à cette fin. Vérifier la minikube start --help
sortir. Donc, pour virtualbox
Cela ressemblera à ce qui suit:
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 pour la commodité.
MinikubevM recevra l'adresse IP suivante: 192.168.77.100
( au moins la première fois. ) Vous pouvez le vérifier à l'aide de minikube ssh
, puis ifconfig
commandes.
Dernière partie - Nous devons créer un service et un point de terminaison à l'intérieur du cluster minikube
:
kubectl apply -f mysql-service.yaml
Voici un contenu du mysql-service.yaml
déposer:
---
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
mysql-service
Nom et port 3306
À l'intérieur de tout pod de ce groupe comme point de destination.Ce n'est pas lié à votre question mais peut-être que cela aide.
Si le problème réel est que vous souhaitez connecter un service à la base de données, il est possible d'exécuter la base de données (pas le stockage, les conteneurs peuvent être apatrides) à l'intérieur de Minikube. Dans ce scénario, vous pourrez utiliser des étiquettes pour correspondre à votre service de base de données avec d'autres services. Nous utiliserions persistentvolume, persistancevolumeclaim et secrets. Ceci Vidéo était vraiment utile pour cela.