写在后面
咱们在k8s去掉了Eureka组件,引入spring-cloud-kubernetes组件。

一、所需工具或命令

  1. kubectl命令
  2. Shadowsocks Server
  3. Shadowsocks Client
  4. 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

参考资料

  1. https://zhuanlan.zhihu.com/p/...
  2. https://alibaba.github.io/kt-...