Minikube暴露于localhost作为服务运行MySQL

问题描述 投票:16回答:3

我已经minikube版本v0.17.1我的机器上运行。我要模拟的环境中,我将在AWS,那里有我的MySQL实例将是我Kubernetes集群之外。

基本上,我怎么可能会暴露我的机器上运行通过minikube运行Kubernetes簇我的本地MySQL实例?

kubernetes minikube
3个回答
10
投票

Kubernetes让您无需选择创建服务和集群不会为这个服务创建相关终点,这个功能通常用来代理传统组件或外部组件。

  1. 创建无选择服务 apiVersion: v1 kind: Service metadata: name: my-service spec: ports: - protocol: TCP port: 1443 targetPort: <YOUR_MYSQL_PORT>
  2. 创建一个相对端点对象 apiVersion: v1 kind: Endpoints metadata: name: my-service subsets: - addresses: - ip: <YOUR_MYSQL_ADDR> ports: - port: <YOUR_MYSQL_PORT>
  3. 获取IP服务 $ kubectl get svc my-service NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-service <SERVICE_IP> <none> 1443/TCP 18m
  4. 从服务<SERVICE_IP>:1443my-service:1443访问你的MySQL

0
投票

一种想法是使用模拟服务,而不选择。因为这个服务没有选择,相应的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的issueissue)。


要查看完整的工作示例GitHub

© www.soinside.com 2019 - 2024. All rights reserved.