除了可以用nocalhost 映射k8s集群中的服务到本地访问以外,还有一个更好用的工具就是kube-forwarder,推荐使用kube-forwarder,nocalhost主要作用是用于远程调试的。

kube-forwarder作用:实现批量端口转发让本地能方便访问远程Kubernetes服务;

在开发过程中,你很可能在kubernetets集群中部署数据库,而且没有通过kubernetes service暴露服务(例如NodePort、Ingress) Kubectl允许端口转发将这些服务映射到localhost,以便在本地进行交互。这对于一个或两个应用程序是没问题,但当你有多个应用程序时, Kube Forwarder 变得比管理多个终端标签更容易使用。它还可以处理自动重新连接和多集群,如果你需要在开发和qa集群之间切换进行测试,这非常方便。

启动kubefwd后,在本地就能像在Kubernetes集群中一样使用service名字与端口访问对应的应用程序。

使用步骤:

导入指定集群的 kubeconfig 文件即可;

使用起来也很简单,选择需要映射的k8s集群中的某个服务,指定映射的端口,

最后启动,用localhost + 端口就可以访问了;

我的使用场景:

本地利用rancher搭建了一个k8s集群,但是要访问集群中的服务只能在集群的一个虚拟机中(我的虚拟机装的是桌面版,因此会有图形化界面,包括浏览器等)用pod的ip+端口来访问集群中的服务,但是这样是很不方便的,因此还可以有其他办法,

要么配置一个dns服务,或者路由交换机啥的,就是想办法把集群中的ip端口映射出来,可以本地访问。

要么用nocalhost来映射某一个服务,然后本地利用idea启动这个服务在访问。

要么用kube-forwarder,一个专门映射集群中服务的软件,映射到本地,可以用localhost + 端口来访问集群中的服务,需要访问哪些服务都可以做映射。

我是映射了前端的一个nginx镜像服务,和我的主服务,有了这两个就可以跑通我服务的所有功能了,其他的redis啊,kafka,mysql这些,不用的,服务本身是可以在集群内部访问到的。

当然我的集群是部署在本地的,可以这样映射访问,大部分集群都是在测试环境,也可以这样映射出来访问,但是肯能测试环境不需要,因为运维会对集群中的服务映射位域名,利用一个dns的域名解析也可以访问。

参考文章:

官网:Kube Forwarder – Easy to use Kubernetes port forwarding manager

kubefwd/README_CN.md at master · txn2/kubefwd · GitHub

基于图形化Kube Forwarder工具映射OpenShift deployment/svc/pod端口至本机 - 简书

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐