我已经安装了minikube来更好地学习kubernetes。
我已经部署了一些应用程序和服务,这些应用程序和服务的IP范围为10.x.x.x
(私有IP)。我可以在minikube上公开我的服务,并在我的浏览器中访问它们。但我想使用私有IP,而不是暴露它。
如何在minikube中访问(vpn / proxy wize)私人ip服务?
答案 0 :(得分:0)
Minikube为Kubernetes,此节点上只运行一个节点和主服务器。 它提供了学习如何使用最少的硬件所需的可能性。 它非常适合测试和在笔记本电脑上无缝运行。 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作为常规网络服务处理并不是一种好的做法 - 在最坏的情况下,它会很快通过无效的内部网络连接状态来破坏集群。