sql >> Base de Datos >  >> RDS >> Mysql

Acceda a mysql ejecutándose en localhost desde minikube

Como el SO y minikube vm-driver no se mencionó, supongo que es --vm-driver=virtualbox porque es probablemente el caso más común. Si usa algo diferente, debe ajustar esta solución de acuerdo con su configuración.

Explicación:

127.0.0.1 es un localhost (lo0 ) dirección IP de la interfaz. Los nodos, hosts y pods tienen sus propias interfaces de host local y no están conectados entre sí.

Tu mysql-server se está ejecutando en la máquina host y no se puede acceder a él mediante localhost (o su rango de IP) desde dentro de un minikube cluster pod o desde dentro de minikube vm.

Solución:

  1. Debe tener una red entre minikube VM y el host. La red NAT predeterminada en Virtualbox no es buena para eso, por lo que es mejor crear otra red solo de host. Vamos a crear red adicional solo de host en la interfaz de usuario de Virtualbox con el nombre vmnet2 y rango de IP 192.168.77.1/24 . No necesita habilitar DHCP para esa red.

  2. Tienes que configurar mysql para escuchar en la interfaz vmnet2 o ip 192.168.77.1 que se utiliza de forma predeterminada para la máquina host. Compruebe si es accesible desde el host:

mysql -h 192.168.77.1 -u root -p 
  1. Para adjuntar esta red a minikube VM, se debe usar la clave --host-only-cidr. Diferente tipo de vm-driver use diferentes opciones de cli para este propósito. Comprueba el minikube start --help producción. Entonces, para virtualbox se verá así:

    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
    

    Escribí otras opciones de cli más comunes solo por conveniencia.

    MinikubeVM obtendrá la siguiente dirección IP:192.168.77.100 (al menos la primera vez. )Puedes comprobarlo usando minikube ssh y luego ifconfig comandos.

  2. Última parte:necesitamos crear un servicio y un punto final dentro del minikube grupo:

kubectl apply -f mysql-service.yaml

Aquí hay un contenido de mysql-service.yaml archivo:

---
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. Ahora podemos usar el mysql-service nombre y puerto 3306 dentro de cualquier pod de este clúster como punto de destino.