k8s本地开发-telepresence
解决了k8s集群网络以及组件镜像的问题;接下来开始正式开发。 开发之前经历了种种之后觉得,开发工作量不大,但是调试部署的工作量实在是巨大,光是制作和上传镜像都是分钟级,再加上k8s替换pod也是分钟级,这些操作放在一起,基本上运气好5分钟,运气不好15分钟;操作复杂度还很高,还需要人来盯着,实在是耗神耗力,不解决这个问题,接下来的开发注定是场苦难。 首先想到的还是devops,但卡...
解决了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
中间泽宇转正谈话回来,奇迹般的正常了,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天。
更多推荐
所有评论(0)