因此,我目前正在本地Kubernetes集群(在docker上运行)上运行来自头盔的稳定/领事图表。
$ helm install -n wet-fish --namespace consul stable/consul
这将创建两个服务
==> v1/Service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
wet-fish-consul ClusterIP None <none> 8500/TCP,8400/TCP,8301/TCP,8301/UDP,8302/TCP,8302/UDP,8300/TCP,8600/TCP,8600/UDP 0s
wet-fish-consul-ui NodePort 10.110.229.223 <none> 8500:30276/TCP
所以这意味着我可以运行localhost:30276
并查看领事ui。
现在我正在本地计算机上运行
$ consul agent -dev -config-dir=./consul.d -node=machine
$ consul join 127.0.0.1:30276
这只会导致:
Error joining address '127.0.0.1:30276': Unexpected response code: 500 (1 error occurred:
* Failed to join 127.0.0.1: received invalid msgType (72), expected pushPullMsg (6) from=127.0.0.1:30276
)
Failed to join any nodes.
和
2020/01/17 15:17:35 [WARN] agent: (LAN) couldn't join: 0 Err: 1 error occurred:
* Failed to join 127.0.0.1: received invalid msgType (72), expected pushPullMsg (6) from=127.0.0.1:30276
2020/01/17 15:17:35 [ERR] http: Request PUT /v1/agent/join/127.0.0.1:30276, error: 1 error occurred:
* Failed to join 127.0.0.1: received invalid msgType (72), expected pushPullMsg (6) from=127.0.0.1:30276
from=127.0.0.1:59693
必须有一种方法可以运行可以连接到k8s领事服务器的本地领事代理...
这是在Mac上,因此联网效果不佳。...
这里可能有两个问题,第一个是领事代理-dev以dev模式启动代理。默认情况下,开发人员模式将同时启动服务器和代理。这可能是错误原因的一部分。
另一个问题可能是由于本地主机,在Kubernetes中运行的服务器将尝试对本地代理进行运行状况检查。它需要能够ping通本地代理,因此,即使您在第一步中成功加入,它也可能无法通过运行状况检查。
我同意在Mac上联网并非易事,您可能要做的一件事就是设置本地代理(非kube)的广告地址。 Docker for mac的主机名docker.for.mac.localhost
是从容器到本地计算机的可路由ip。启动本地代理时,如果将发布地址设置为该主机的ip值,则Kubernetes Consul服务器应该能够路由到本地运行的代理。
可能的解决方法:1.确保本地代理正在客户端模式下启动(手动配置不是-dev)2.将advertise advertise地址设置为可从Kubernetes docker.for.mac.localhost
给我一个喊叫,如果那对你不起作用,我自己使用了这样的设置,9/10就是Docker与本地计算机之间的网络。
亲切的问候,
Nic