K8S 服务发现支持

1. 服务注册发现原理

k8s将资源的所有字段保存在etcd分布式存储中,通过api server提供资源的修改接口。

glory框架目前的实现是:将当前服务名作为label key、pod真实ip(并非nodeip)经过转义后作为label value。

客户端服务发现:在当前命名空间下,筛选所有提供所需服务的pod真实ip,将拿到的ip列表做客户端负载均衡,进行调用

2. 使用方法

example:可见:example/k8s

运行服务首先保证本地存在k8s集群

registry:
  "registryKey":
    service: k8s

引入依赖

import(
       _ "github.com/glory-go/glory/registry/k8s"
)

kubectl create namespace glory

分别在client和server下运行

sudo sh build.sh

即可开启三个server和一个client,可通过docker dashboard 或者日志打印的方式,看到负载均衡调用的体现。

3. 接下来的工作