我有一个关于如何在 Kubernetes 中使用 go-micro 的问题。AFAIK,Kubernetes 已经有用于服务发现的 kube-dns 和带有服务抽象的 kube-proxy 来公开 Pod。
是否可以使用 go-micro,但跳过kubernetes go-micro 插件将自己注册到 Kubernetes API 服务器?
因为我不确定为什么首先需要它。事实上,kubelet 会自动为我们做这件事(通过 livenessProbe 和 readinessProbe 检查,然后它可以确定 pod 是否健康),只需将健康的 pod 包含到service的端点。
我问这个问题是因为我们也在使用 istio-proxy。每当 Pod 启动时,我们都会遇到微服务错误,因为 istio-proxy 还没有准备好路由流量(甚至是到 kube api 的流量,因为它拦截了来自我们主容器的出口流量(它使用 go-micro Kubernetes 插件))。
2018/10/17 04:37:55 无法创建服务器!原因:补丁 https://10.32.64.1:443/api/v1/namespaces/data-cdp/pods/cdp-booking-context-svc-stable-864645684b-xd2tb : 拨打 tcp 10.32.64.1:443: connect: 连接拒绝
然后它会多次导致主容器(go-micro kube 插件应用程序)在 crashloopback 中,直到 istio-proxy 准备好。这不是一个大问题,但它让我对注册背后的动机感到困扰。