Windows下访问K8S集群中的POD
Windows下访问K8S集群中的POD
概述
近期在公司搭建了一个K8s集群,有一个项目使用了spring cloud框架做开发,在部署的时候发现一个问题。所有的微服务打包后运行在集群上,互相是可以通过feign进行访问的,这点没问题。但如果需要在本地调试,发现在集群中部署的应用无法反向访问本地应用,下面是我解决的具体方法。
应用服务器
K8s的安装和配置就不在这里具体说明了,将master中的k8s代理启动好,执行下面脚本。
启动脚本:proxy-start.sh
1 | /bin/sh |
停止脚本:
1 | /bin/sh |
测试地址:http://{IP地址}:8001/api/v1/namespaces/default/services
应用部署说明
应用名称 | 部署位置 |
---|---|
Eureka | k8s |
Api-Gateway | k8s |
SSO-Login | k8s |
Auth-Service | 本地 |
本地环境
准备工作
在本地环境中我们先下载kubectl和kubefwd工具,并在当前windows用户下创建一个.kube
文件,我这里的地址是C:\Users\13966\.kube
配置kubectl
在windows的cmd中使用命令配置k8s远程环境
1 | kubectl config set-cluster {cluster_name} --server=https://master_ip:8001 --insecure-skip-tls-verify=true |
配置好后会在C:\Users\13966\.kube
下生成一个config文件
1 | apiVersion: v1 |
到这里我们就可以使用k8s的命令来验证是否能连上远程代理
这只是将windows和k8s打通了,还不能直接访问pod。我们还需要使用kubefwd软件,执行命令。
配置kubefwd
使用官方给的命令.\kubefwd.exe services -n default
,这时就会看到下图,就说明我们本地能进行访问pods了
使用curl -i
来验证是否本地能访问,到这里windows中访问k8s集群的pod就完成了
Eureka本地远程互相访问
有了之前的一些配置后,只是打通了本地访问pod的问题,如果通过eureka进行转发还是会存在无法访问的情况,那么我们还需要在各个工程中设置如下:
1 | # 关闭IP注册方式 |
注意:hostname的名称必须要和k8s中Service.metadata.name
一致,本地需要调试的工程无需进行设置,将ip注册方式打开就可以了。
参考文献