【问题标题】:Local Consul join K8s Consul Mac本地 Consul 加入 K8s Consul Mac
【发布时间】:2020-01-17 15:27:52
【问题描述】:

所以我目前正在本地 Kubernetes 集群上运行(在 docker 上运行)来自 helm 的 stable/consul 图表。

  $ 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 并查看 consul 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

一定有办法让本地consul代理运行,可以连接到k8s consul服务器……

这是在 Mac 上,所以网络不太好......

【问题讨论】:

    标签: docker kubernetes kubernetes-helm consul


    【解决方案1】:

    这里可能有两个问题,第一个是consul agent -dev 以dev模式启动代理。默认情况下,开发模式将同时启动服务器和代理。这可能是错误背后的部分原因。

    另一个问题可能是由于 localhost,在 Kubernetes 中运行的服务器将尝试对本地代理进行健康检查。它需要能够 ping 本地代理,因此即使您设法在第一步中加入,它也可能无法通过健康检查。

    我同意在 Mac 上联网并不容易,您可能需要做的一件事是为本地代理(非 kube)设置广告地址。 Docker for mac 的主机名 docker.for.mac.localhost 是从容器到本地机器的可路由 IP。启动本地代理时,如果将广告地址设置为该主机的 ip 值,Kubernetes Consul 服务器应该能够路由到本地运行的代理。

    可能的修复: 1.确保本地代理以客户端模式启动(手动配置非-dev) 2. 将advertisement地址设置为可从Kubernetes路由的ip地址docker.for.mac.localhost

    如果这对你不起作用,请大声疾呼,我自己也使用过这样的设置,9/10 它是 Docker 和本地机器之间的网络。

    亲切的问候,

    网卡

    【讨论】:

    • 我使用了 consul 的 helm 模板——我将客户端设置为完全不同的端口(每个端口号 +1000)。然后我只使用了在我的/etc/hosts 文件中设置的kubernetes.docker.internal - 没有指定端口并且它加入了...Join completed. Synced with 1 initial agents - 但是我在日志中得到了这个2020/01/20 10:44:45 [WARN] manager: No servers available 2020/01/20 10:44:45 [ERR] agent: failed to sync remote state: No known Consul servers
    • 啊-所以我转发了8301
    猜你喜欢
    • 1970-01-01
    • 2020-12-04
    • 2020-05-18
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多