Minikube:使用proxy / vpn访问私有服务

时间:2018-04-22 20:54:15

标签: kubernetes minikube

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

如何在minikube中访问(vpn / proxy wize)私人ip服务?

1 个答案:

答案 0 :(得分:0)

MinikubeKubernetes,此节点上只运行一个节点和主服务器。 它提供了学习如何使用最少的硬件所需的可能性。 它非常适合测试和在笔记本电脑上无缝运行。 Minikube仍然是成熟的软件 来自Kubernetes的网络堆栈。这意味着端口暴露于服务和虚拟服务 与豆荚沟通。

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

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

kubectl get services test_service

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

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

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

示例显示我们如何使用nodeselectors定义与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 - 首先检查{min}与minikube集群通信的kubectl命令行工具是否正常工作,然后如果是,则从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作为常规网络服务处理并不是一种好的做法 - 在最坏的情况下,它会很快通过无效的内部网络连接状态来破坏集群。