由于服务发现失败而导致Go Micro的网真和领事导致错误

时间:2019-01-31 06:21:41

标签: kubernetes google-kubernetes-engine consul go-micro

我使用的是去微对我的申请,我目前使用领事地方发展,但我使用Kubernetes当我部署我的服务为分期和生产环境。我读到临场感[1]这基本上是一个双重代理允许您访问您的Kubernetes服务的依赖。于是,我就用临场感。这个本地代码中使用网真部署创建测试新的命名空间的部署和允许在同一个集群内访问不同的命名空间中的另一个服务。然而我的服务有这种错误的:

2019/01/29 13:11:18 stat
/var/run/secrets/kubernetes.io/serviceaccount: no such file or direct

这是一种奇怪的,因为我可以使用相同的方法时,我的服务并不需要有Kubernetes集群中的任何依赖性。另一个要注意的是,我在Google Cloud上将GKE与RBAC一起用于每个命名空间。

[1] https://www.telepresence.io/

1 个答案:

答案 0 :(得分:0)

这是因为,默认情况下,带有kubernetes的go微型计算机将尝试找到能够在群集中部署应用程序所需的默认服务帐户。仅当我们在新的部署模式下使用网真时,这才适用。因为网真将创建一个新的部署以打开代理连接,所以我们将能够访问群集的所有资源。

我设法在go-micro上使用网真运行了我的代码,我要做的就是创建:

sudo mkdir -p /var/run/secrets/kubernetes.io/

,然后使用符号链接:

sudo ln -s $TELEPRESENCE_ROOT/var/run/secrets/kubernetes.io/serviceaccount/ /var/run/secrets/kubernetes.io

然后运行:

go main.go --selector=static --server_address=0.0.0.0:<port>

这里的静态标志很重要[1]

参考: 1. https://github.com/micro/go-plugins/tree/master/selector/static