我已经minikube版本v0.17.1我的机器上运行。我要模拟的环境中,我将在AWS,那里有我的MySQL实例将是我Kubernetes集群之外。
基本上,我怎么可能会暴露我的机器上运行通过minikube运行Kubernetes簇我的本地MySQL实例?
Kubernetes让您无需选择创建服务和集群不会为这个服务创建相关终点,这个功能通常用来代理传统组件或外部组件。
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
ports:
- protocol: TCP
port: 1443
targetPort: <YOUR_MYSQL_PORT>
apiVersion: v1
kind: Endpoints
metadata:
name: my-service
subsets:
- addresses:
- ip: <YOUR_MYSQL_ADDR>
ports:
- port: <YOUR_MYSQL_PORT>
$ 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一种想法是使用模拟服务,而不选择。因为这个服务没有选择,相应的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
另一种解决方案是使用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
被称为与虚拟箱的工作只(见SO)。对于xhyve
,请尝试更换与192.168.99.1
(见GitHub的issue和issue)。
要查看完整的工作示例GitHub。