Mysql
 sql >> Base de données >  >> RDS >> Mysql

Accéder à mysql en cours d'exécution sur localhost à partir de minikube

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 :

  1. 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 IP 192.168.77.1/24 . Vous n'avez pas besoin d'activer DHCP pour ce réseau.

  2. 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 
  1. 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 le minikube start --help production. Donc, pour virtualbox 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 utilisant minikube ssh puis ifconfig commandes.

  2. 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
  1. Nous pouvons maintenant utiliser le mysql-service nom et port 3306 à l'intérieur de n'importe quel pod de ce cluster en tant que point de destination.