[英]Local Consul join K8s Consul Mac
所以我目前正在我的本地 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 上,所以網絡不是很好....
這里可能有兩個問題,第一個是consul agent -dev 以dev模式啟動agent。 默認情況下,開發模式將同時啟動服務器和代理。 這可能是錯誤背后的部分原因。
另一個問題可能是由於 localhost,在 Kubernetes 中運行的服務器將嘗試對本地代理進行健康檢查。 它需要能夠 ping 本地代理,因此即使您在第一步中設法加入,它也可能無法通過健康檢查。
我同意在 Mac 上聯網這並不容易,您可能需要做的一件事是為本地代理(非 kube)設置廣告地址。 Docker for mac 有一個主機名docker.for.mac.localhost
,它是一個從容器到本地機器的可路由 IP。 啟動本地代理時,如果您將廣告地址設置為該主機的 ip 值,Kubernetes Consul 服務器應該能夠路由到本地運行的代理。
潛在修復:1. 確保本地代理在客戶端模式下啟動(手動配置而不是 -dev) 2. 將廣告地址設置為可從 Kubernetes docker.for.mac.localhost
路由的 IP 地址
如果這對您不起作用,請告訴我,我自己使用了這樣的設置,9/10 它是 Docker 和本地機器之間的網絡。
親切的問候,
網卡
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.