我正在尝试从 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