解决了k8s集群网络以及组件镜像的问题;接下来开始正式开发。

 

开发之前经历了种种之后觉得,开发工作量不大,但是调试部署的工作量实在是巨大,光是制作和上传镜像都是分钟级,再加上k8s替换pod也是分钟级,这些操作放在一起,基本上运气好5分钟,运气不好15分钟;操作复杂度还很高,还需要人来盯着,实在是耗神耗力,不解决这个问题,接下来的开发注定是场苦难。

 

首先想到的还是devops,但卡在jenkins和docker的融合上,没办法全自动;当然脚本也能解决个差不多,但是还是无法解决开发调试的效率问题,每次运行都需要部署到k8s,这个是瓶颈所在。

 

理想状况是本地和集群的网络打通,这样就能访问k8s内部pod的ip,地址和ip再建立一层映射就可以了,首先想到的是自己的电脑也加入k8s集群,这样就从属于同一个网络模型,网络通信的问题也就解决了。查了下,mac上docker刚刚支持了一个单机版的k8s集群,只能自己测试,不能加入其它集群。

万后来查了查能的google,找到了几个工具,包括谷歌自己的。最终发现telepresence和自己的想法最接近,实际上就是个vpn;这个工具只支持linux和mac,高经去实验另外一个window可用的openvpn。

 

资料太少,全是英文的,貌似也没太多人开始用,更新也较快,只能啃官方文档。

远程集群连接的坑,翻遍了也没有找到相关的资料,最后根据经验将远程集群的配置拷贝到本地,然后配置环境变量,bingo。

declare -x KUBECONFIG=":/Users/hadoop/Downloads/config"

telepresence --run /bin/bash

 

因为用到了spring cloud的eureka服务管理,注册的都是pod ip;但是pod ip无法访问,需要单独加网段映射。

https://github.com/telepresenceio/telepresence/issues/264

增加 --also-proxy 192.168.0.0/16

telepresence --swap-deployment manager-web --env-json manager_web_env.json --namespace manager --also-proxy 192.168.0.0/16

 

经历种种,虽然打通了,但是现在卡在dns解析上,全域名可以,但是

manager-registry-service这个关键的服务名始终识别不了,nslook能够识别,但是curl就是不行;奇怪的是manager-config-service就可以,不明所以。

发现以下几个相关的issue,但是没找到直接解决的方案

https://github.com/telepresenceio/telepresence/issues/560

https://github.com/telepresenceio/telepresence/issues/578

https://github.com/telepresenceio/telepresence/issues/602

https://stackoverflow.com/questions/24967855/curl-6-could-not-resolve-host-google-com-name-or-service-not-known

 

中间泽宇转正谈话回来,奇迹般的正常了,service和pod都没有重启。忘记了,貌似是重启了pod的。

后经验证,不是重启pod生效,后来退出再进失效。重启电脑后第一次生效,后续无效,很诡异。

惊奇发现失效后,断网后再连有效。。。

 

最后还剩一个本机ip识别的问题,需要指定pod的ip才行。这里也是因为eureka注册中心要用其他pod能访问的到。

eureka.instance.ip-address=

 

elepresence --swap-deployment manager-rest --env-json manager_rest_env.json --namespace manager --also-proxy 192.168.0.0/16 --also-proxy manager-registry-service --expose 8080:8080

 

测试over,用时3天。

 

 

 

 

 

 

 

 

 

Logo

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

更多推荐