写在后面
咱们在k8s去掉了Eureka组件,引入spring-cloud-kubernetes组件。
一、所需工具或命令
- kubectl命令
- Shadowsocks Server
- Shadowsocks Client
- KT Connect
原本只须要kubectl命令和kt connect就行了,次要是kt connect现有的socks5代理服务有点问题,至多在我这边是这样,0.0.12版本的话idea外面的程序起不来,0.0.13-rc11版本的话vpn和socks5延时高,常常超时。所以萌发了用shadowsocks server来替换kt connect外面的socks5服务(也就是kt connect这一步),kt其余的性能还是依旧,这样就完满联合了。
如果是mac电脑或者ubuntu零碎的电脑的话用0.0.12版本的kt的vpn连贯是没有问题的,然而我还是倡议应用socks5的模式,因为这样不是所有的流量都走vpn,而且其余的开发人员不须要在本机启动vpn代理,只须要通过shadowsocks client连上k8s内的服务,就能够应用kt命令了。
二、装置
2.1 装置kubectl命令
参考官网地址装置:https://kubernetes.io/zh/docs/tasks/tools/install-kubectl/ ,装置实现后在用户目录下(Mac或Ubuntu用户:/Users/xxxxxx ; Windows用户: C:UsersAdministrator)下手动建设 .kube 文件夹,而后将群外面的config文件拷贝到这外面。操作完后应用命令kubectl get pods查看是否装置实现。如果失败认真查看官网装置步骤,重新安装。
装置实现后,批改hosts文件在其中增加上面记录(联合本人的k8s集群的apiserver地址来设置)
192.168.1.236 k8s.apiserver
2.2 装置Shadowsocks Server服务端
编写yml文件,并在k8s集群的default命名空间中执行。
---apiVersion: apps/v1kind: Deploymentmetadata: name: shadowsocks-server-deployment namespace: default labels: app: shadowsocks-server-deploymentspec: replicas: 1 selector: matchLabels: app: shadowsocks-server-pod template: metadata: labels: app: shadowsocks-server-pod spec: containers: - name: shadowsocks-server-container image: shadowsocks/shadowsocks-libev command: [ # need to modify "-d" to k8s core-dns "--fast-open" "ss-server","-s","0.0.0.0", "-p", "8388", "-t", "300","-k", "代理明码", "-m", "aes-256-cfb", "-d", "10.96.0.10,114.114.114.114", "-u" ] ports: - containerPort: 8388 protocol: TCP name: tcp - containerPort: 8388 protocol: UDP name: udp---apiVersion: v1kind: Servicemetadata: name: shadowsocks-server namespace: defaultspec: type: NodePort ports: - port: 8388 targetPort: 8388 nodePort: 32088 protocol: TCP name: tcp - port: 8388 targetPort: 8388 nodePort: 32088 protocol: UDP name: udp selector: app: shadowsocks-server-pod
我这里间接用的是NodePort来开发端口,你们也能够应用ingress来裸露服务
2.3 装置Shadowsocks Client客户端
Mac用户下载:https://github.com/shadowsocks/ShadowsocksX-NG/releases/download/v1.9.4/ShadowsocksX-NG.1.9.4.zip
Window用户下载:https://github.com/shadowsocks/shadowsocks-windows/releases/download/4.1.10.0/Shadowsocks-4.1.10.0.zip
依照下图来设置
地址:因为应用NodePort地址能够填写任意一台node节点的物理IP,这里是:192.168.1.237
端口:填写NodePort裸露的端口,这里是:32088
明码:填写Shadowsocks Server的yml中设置的明码即可
2.4 装置KT Connect客户端命令
参考官网装置步骤:https://alibaba.github.io/kt-connect/#/zh-cn/downloads 咱们应用0.0.12版本,装置完后应用命令ktctl -v查看是否依照实现
2.5 配置IDEA
首先增加k8s的namespace环境变量
如果用的是KT Connect来建设socks5连贯的话则增加以下两个运行参数:
如果应用的是Shadowsocks Client来建设代理连贯的话则增加以下参数:
至于这个http.proxyPort这个端口号,在Mac下是1087
在Windows下是1080
三、应用KT进行本地联调
3.1 首先在本地的IDEA中启动要调试的服务
3.2 托管开发环境某个服务将流量引入本地
#在命令行中执行以下命令#-n default 是托管命名空间(default)下的deployment服务#zsy-business-service-deployment格局是【模块名称-deployment】#--expose 8088指定是本地启动的服务的端口#这样就将开发环境下的zsy-business-service的流量代理到本地启动的服务sudo ktctl -d -n default exchange zsy-business-service-deployment --expose 8088
留神:这个是齐全托管,不论开发环境中有几个这个服务的pod,所有流量都托管到本地
3.3 间接公布本地服务
如果开发环境没有公布这个服务,则间接将本地服务公布到k8s中去,不须要托管
# localservice改成本地服务名#-n default 是将服务公布在命名空间(default)下#--port 8080是本地服务端口sudo ktctl -d -n default run localservice --port 8080 --expose
参考资料
- https://zhuanlan.zhihu.com/p/...
- https://alibaba.github.io/kt-...