Istio bookinfo 是如何做到服务发现的?

2020-05-15 21:32:58 +08:00
 xiaoFine
小白一问

今天在 k8s 上跑了下 bookinfo,看了下 java 和 py 的源码都是用环境变量(例如 REVIEW_HOST )来写其他服务的,但是看了下几个 dockerfile 和 yaml 都没有相关的配置,所以是怎么实现的呢?

简单搜了下貌似是 k8s 自己做了服务注册吗? istio 只是做了加载? 没有像 eureka 这样的东西吗?
3116 次点击
所在节点    Kubernetes
2 条回复
xiaoFine
2020-05-16 11:00:49 +08:00
参考 jimmy 大佬的书: https://jimmysong.io/kubernetes-handbook/concepts/service.html,

**当 Pod 运行在 Node 上,kubelet 会为每个活跃的 Service 添加一组环境变量**

但是这些环境变量的写法是有格式的,如下:

```
$ env | grep RATINGS
RATINGS_PORT_9080_TCP_ADDR=10.233.46.167
RATINGS_PORT_9080_TCP_PORT=9080
RATINGS_PORT_9080_TCP_PROTO=tcp
RATINGS_PORT=tcp://10.233.46.167:9080
RATINGS_SERVICE_PORT=9080
RATINGS_PORT_9080_TCP=tcp://10.233.46.167:9080
ENABLE_RATINGS=false
RATINGS_SERVICE_PORT_HTTP_WEB=9080
RATINGS_SERVICE_HOST=10.233.46.167
```

而实际上代码写的是:
```
private final static String ratings_hostname = System.getenv("RATINGS_HOSTNAME") == null ? "ratings" : System.getenv("RATINGS_HOSTNAME");
```

并不存在``RATINGS_HOSTNAME``这个东西
xiaoFine
2020-05-16 13:08:00 +08:00
https://discuss.istio.io/t/where-does-the-environment-variable-is-set/4710/3

看来却是不存在那个环境变量,用的是三元表达式的 true 值

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/672192

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX