加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

阿里工程师开发了一款免费工具,提升Kubernetes应用开发效率

发布时间:2019-03-28 22:47:33 所属栏目:建站 来源:郑云龙
导读:对于使用了Kubernetes作为应用运行环境的开发者而言,在同一个集群中我们可以使用命名空间(Namespace)快速创建多套隔离环境,在相同命名空间下,服务间使用Service的内部DNS域名进行相互访问。 基于Kubernetes强大的隔离以及服务编排能力,可以实现一套

使用如下命令,通过本地2000运行的代理,可以将网络请求通过集群中运行的kt-proxy容器进行转发,从而实现本地到集群网络请求的转发:

  1. # ssh -D [本地网卡地址:]本地端口 name@ip -p映射到kt-proxy的22端口的本地端口 
  2.  
  3. ssh -D 2000 root@127.0.0.1 -p2222 

在启用SSH动态端口转发后,通过设置http_proxy环境变量后,即可直接在命令行中访问集群网络:

  1. # export http_proxy=socks5://127.0.0.1:ssh动态端口转发的代理端口 
  2.  
  3. export http_proxy=socks5://127.0.0.1:2000 

不过原生SSH动态端口转发也有一定的限制那就是无法直接使用UDP协议,这里我们选择了一个替代方案sshuttle. 如下命令所示:

  1. # export http_proxy=socks5://127.0.0.1:ssh动态端口转发的代理端口 
  2.  
  3. export http_proxy=socks5://127.0.0.1:2000 
  4.  
  5. sshuttle --dns --to-ns 172.16.1.36 -e 'ssh -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null' -r root@127.0.0.1:2222 172.16.1.0/16 172.19.1.0/16 -vv 

sshuttle工具在SSH协议之上构建了一个简易的VPN网络,同时支持DNS协议转发。

因此,接下来的问题就是实现一个自定义的DNS服务即可,而该服务在KT中是直接内置在KT代理镜像中。

远程端口转发

在本地到集群的链路打通之后。 接下来需要解决的就是从集群到本地的访问链路。这部分,我们会使用到SSH的远程端口转发能力,如下所示,指定所有对kt-proxy的8080端口的网络请求都会通过SSH隧道直接转发到本地的8080端口:

  1. # ssh -R 8080:localhost:8080 root@127.0.0.1 -p2222 
  2.  
  3. ssh -R 8080:localhost:8080 root@127.0.0.1 -p2222 

因此,在KT的实现过程之中,结合Kubernetes基于标签的松耦合能力,我们只需要克隆原有应用实例的YAML描述,并将容器替换为kt-proxy即可。从而将对集群中原有应用的请求通过SSH远程端口转发到本地。

综上,,通过利用Kubernetes原生能力以及适度的扩展,开发者可以快速在本地利用KT打破本地网络与Kubernetes网络之间的界限,大大提升使用Kubernetes进行联调测试的效率。

小结

工具承载了对特定问题的解决方案,而工程技术实践则是对其价值的放大。阿里巴巴云效平台,致力于为开发者提供一站式的企业研发与协作服务,并将阿里多年的软件工程实践以一种更加开发的形态反馈技术社区,欢迎更多的技术开发者入驻。

【编辑推荐】

  1. 超 100000 个 GitHub 代码库泄露了 API 或加密密钥
  2. 如何阅读一份源代码?
  3. Simdjson:一个超高速的JSON解析工具
  4. 前端开发值得拥有的 VSCode 插件
  5. SQL优化还凭经验?这个工具能帮你智能优化SQL
【责任编辑:张燕妮 TEL:(010)68476606】
点赞 0

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读