Minikube。如何允许从容器访问本地 mySQL 数据库

Minikube。如何允许从容器访问本地 mySQL 数据库

我正在尝试从 minikube 容器访问本地 MySQL 数据库。我的 minikube 在带有 hyper-v 驱动程序的 Windows 10 上运行。我找到了一些解决方案(从 VirtualBox 创建仅主机网络),但没有找到适用于 hyper-v 的解决方案。有人能帮助我如何从 minikube hyper-v 连接到 localhost mysql 服务器吗?

答案1

Minikube v1.10 在集群 DNS 中添加了一个主机名,允许 Pod 连接到主机。让您的 Pod 使用此 DNS 条目访问主机 IP。此时,DNS 主机名是host.minikube.internal

文档了解更多。

答案2

首先你需要创建一个Service然后Endpoint 使用你的 MySQL 的 IP 创建一个。

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

你也可以查看这个问题从 minikube 集群内部连接到本地数据库

答案3

通过以下方式获取主机 IPHOST_IP=$(minikube ssh "route -n | grep ^0.0.0.0 | awk '{ print \$2 }'")

根据K8s文档申请:

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

相关内容