Minikube公开在localhost上运行的MySQL作为服务

cgf*_*cgf 20 kubernetes minikube

我的机器上运行了minikube v0.17.1版本.我想模拟我将在AWS中拥有的环境,我的MySQL实例将在我的Kubernetes集群之外.

基本上,我如何将在我的机器上运行的本地MySQL实例暴露给通过minikube运行的Kubernetes集群?

小智 11

Kubernetes允许您创建没有选择器的服务,并且集群不会为此服务创建相关端点,此功能通常用于代理旧组件或外部组件.

  1. 创建没有选择器的服务

    apiVersion: v1
    kind: Service
    metadata:
        name: my-service
    spec:
        ports:
            - protocol: TCP
              port: 1443
              targetPort: <YOUR_MYSQL_PORT>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建相对Endpoint对象

    apiVersion: v1
    kind: Endpoints
    metadata:
        name: my-service
    subsets:
        - addresses:
            - ip: <YOUR_MYSQL_ADDR>
          ports:
            - port: <YOUR_MYSQL_PORT>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 获得服务IP

    $ kubectl get svc my-service
    NAME         CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
    my-service   <SERVICE_IP>   <none>        1443/TCP    18m
    
    Run Code Online (Sandbox Code Playgroud)
  4. 从服务<SERVICE_IP>:1443或访问您的MYSQLmy-service:1443

  • 但是当你在localhost上运行时,你为YOUR_MYSQL_ADDR做了什么? (9认同)

Dav*_*aze 5

从 minikube 1.10 开始,有一个特殊的主机名 host.minikube.internal可以解析为运行 minikube VM 或容器的主机。然后,您可以在 pod 的环境变量或定义相关设置的 ConfigMap 中配置此主机名。