Minikube 将在 localhost 上运行的 MySQL 公开为服务
Posted
技术标签:
【中文标题】Minikube 将在 localhost 上运行的 MySQL 公开为服务【英文标题】:Minikube expose MySQL running on localhost as service 【发布时间】:2017-09-07 07:51:00 【问题描述】:我的机器上正在运行 minikube 版本 v0.17.1。我想模拟我在 AWS 中的环境,我的 mysql 实例将在我的 Kubernetes 集群之外。
基本上,如何将我机器上运行的本地 MySQL 实例暴露给通过 minikube 运行的 Kubernetes 集群?
【问题讨论】:
也许这个answer 会帮助你? 不是真的,或者至少我不确定。大多数帖子,包括这篇文章,似乎都在谈论如何从本地主机访问在 Kubernetes 中运行的服务,而我想要完全相反:在我的本地主机上公开一个端口并让它在我的 Kubernetes 集群中可用。 【参考方案1】:Kubernetes 允许你创建一个没有选择器的服务,并且集群不会为这个服务创建相关的端点,这个特性通常用于代理遗留组件或外部组件。
创建一个没有选择器的服务
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
ports:
- protocol: TCP
port: 1443
targetPort: <YOUR_MYSQL_PORT>
创建一个相对的 Endpoint 对象
apiVersion: v1
kind: Endpoints
metadata:
name: my-service
subsets:
- addresses:
- ip: <YOUR_MYSQL_ADDR>
ports:
- port: <YOUR_MYSQL_PORT>
获取服务IP
$ kubectl get svc my-service
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-service <SERVICE_IP> <none> 1443/TCP 18m
从服务<SERVICE_IP>:1443
或my-service:1443
访问您的MYSQL
【讨论】:
对于 pod 间引用,可以使用服务名称“my-service”代替其他 pod 的配置。只需确保在同一网络部分中找到 IP“从 minikube 1.10 开始,有一个 special hostname host.minikube.internal
可以解析为运行 minikube 虚拟机或容器的主机。然后,您可以在 pod 的环境变量或定义相关设置的 ConfigMap 中配置此主机名。
【讨论】:
不幸的是 OP,但这应该是那些使用 minikube 1.10+ 的人接受的答案【参考方案3】:选项 1 - 使用没有选择器的无头服务
因为这个服务没有选择器,所以不会创建对应的Endpoints
对象。您可以手动将服务映射到您自己的特定端点(请参阅doc)。
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
ports:
- port: 80
targetPort: 8080
---
kind: Endpoints
apiVersion: v1
metadata:
name: my-service
subsets:
- addresses:
- ip: 10.0.2.2
ports:
- port: 8080
选项 2 - 使用 ExternalName
服务
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
type: ExternalName
externalName: minikube.host
唯一需要注意的是它需要能够解析minikube.host
。只需将此行添加到etc/hosts
文件即可。
10.0.2.2 minikube.host
ExternalName
目前不支持端口映射。
另一个注意事项:已知 IP 10.0.2.2
仅适用于 Virtual Box(请参阅 SO)。
对于xhyve
,请尝试将其替换为192.168.99.1
(参见GitHub issue 和issue)。一个演示GitHub。
【讨论】:
【参考方案4】:提醒一下,如果在 Windows 上,请打开防火墙。
【讨论】:
以上是关于Minikube 将在 localhost 上运行的 MySQL 公开为服务的主要内容,如果未能解决你的问题,请参考以下文章
访问 minikube 仪表板 - (Ubuntu20.04 服务器)VM 运行在带有 VirtualBox 6.1 的 Windows 10 主机上
Minikube Kubernetes 不允许在 Mac 上进入,尽管作为 VM 运行
docker container和Minikube之间的链接