4

I'm trying to access to local MySQL database from minikube container. My minikube works on Windows 10 with hyper-v driver. I found a few solutions (creating host-only network from VirtualBox) but nothing for hyper-v. Can somebody assist me how can I connect to localhost mysql server from minikube hyper-v?

Denis Lopatin
  • 41
  • 1
  • 1
  • 2

3 Answers3

3

Minikube v1.10 added a hostname to the cluster DNS that allows pods to connect to the host. Have your pods use this DNS entry to access the host IP. At this time, the DNS hostname is host.minikube.internal

See docs to learn more.

levibostian
  • 133
  • 4
1

First you need to create a Service and then create an Endpoint with the IP of your MySQL.

apiVersion: v1
kind: Service
metadata:
  name: database
spec:
  ports:
  - port: 3306
    targetPort: 3306
    protocol: TCP
---
# Because this service has no selector, the corresponding Endpoints
# object will not be created. You can manually map the service to
# your own specific endpoints:
kind: Endpoints
apiVersion: v1
metadata:
  name: database
subsets:
  - addresses:
      - ip: "23.99.34.75"
    ports:
      - port: 3306

Also you can check this question Connect to local database from inside minikube cluster.

Crou
  • 739
  • 3
  • 10
0

Get your host ip by HOST_IP=$(minikube ssh "route -n | grep ^0.0.0.0 | awk '{ print \$2 }'")

According to K8s docs apply:

apiVersion: v1
kind: Service
metadata:
  name: mysql-db
spec:
  ports:
  - port: 3306
    targetPort: 3306
    protocol: TCP

---
kind: EndpointSlice
apiVersion: discovery.k8s.io/v1
metadata:
  name: mysql-db-endpoint
  labels:
      kubernetes.io/service-name: mysql-db
addressType: IPv4
ports:
  - port: 3306
    name: ''
    appProtocol: http
    protocol: TCP
endpoints:
  - addresses:
      - $HOST_IP