【问题标题】:Minikube: access private services using proxy/vpnMinikube:使用代理/vpn 访问私有服务
【发布时间】:2018-04-25 00:04:52
【问题描述】:

我安装了 minikube 来更好地学习 kubernetes。 我已经部署了一些应用程序和服务,这些应用程序和服务的 IP 地址范围为10.x.x.x(私有 IP)。我可以在 minikube 上公开我的服务并在浏览器中访问它们。但我想使用私有 IP 而不是公开它。

如何在 minikube 中访问 (vpn/proxy wize) 服务的私有 IP?

【问题讨论】:

    标签: kubernetes minikube


    【解决方案1】:

    MinikubeKubernetes,只有一个节点和主服务器在该节点上运行。 它提供了了解它如何在所需的最少硬件条件下工作的可能性。 它非常适合用于测试目的和在笔记本电脑上无缝运行。 Minikube 仍然是成熟的软件 来自 Kubernetes 的网络堆栈。这意味着端口暴露给服务,而实际上服务是 与 pod 通信。

    要了解什么是通信,让我解释一下ClusterIP 的作用 - 它在集群中的内部 IP 上公开服务。这种类型使服务只能从集群内访问。

    你可以通过命令获取集群IP:

    kubectl get services test_service
    

    因此,在创建新服务后,您希望建立与 ClusterAPI 的连接。

    基本上,有三种方式可以连接到后端资源:

    1/ 使用kube-proxy - 此代理反映了 Kubernetes API 中定义的服务和简单​​流 TCP 和 UDP 到后端或在高级配置中设置它们。服务集群 IP 和端口当前通过Docker compatible environment variables 指定由服务代理打开的端口。有一个可选插件为这些集群 IP 提供集群 DNS。用户必须使用 apiserver API 创建服务来配置代理。

    示例展示了我们如何使用节点选择器来定义与 ClusterIP 上端口 5000 的连接 - config.yaml 可能包含:

    kind: Service 
    apiVersion: v1
    metadata:
      name: jenkins-discovery
      namespace: ci spec:
    type: ClusterIP
    selector: 
      app: master 
      ports: 
      - protocol: TCP
       port: 50000
      targetPort: 50000
    
       name: slaves
    

    2/ 使用port forwarding to access application - 首先检查kubectl 命令行工具是否可以与您的minikube 集群通信,如果是则从ClusterIP 配置中查找服务端口。

    kubectl get svc | grep test_service
    

    假设服务 test_service 在端口 5555 上工作,因此要进行端口转发,请运行以下命令:

    kubectl port-forward pods/test_service 5555:5555
    

    之后,您的服务将在 localhost:5555 上可用

    3/ 如果您熟悉 pods networking 的概念,您可以在 pod 的清单文件中声明公共端口。用户可以连接到定义清单的 pods 网络:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      labels:
        app: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.7.9
            ports:
            - containerPort: 8080
    

    当容器以上述清单文件启动时,主机端口 TCP 端口 8080 将被转发到 pod 端口 8080。

    请记住,ClusterIP 使用了很多关于集群正常工作的服务。我认为将 ClusterIP 作为常规网络服务处理不是一个好习惯 - 在最坏的情况下,它会通过无效的内部网络连接状态很快破坏集群。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-22
      • 2015-09-18
      • 1970-01-01
      • 2022-11-07
      • 2019-07-19
      • 2017-08-18
      • 2021-09-17
      • 2014-02-23
      相关资源
      最近更新 更多