一千萬個為什麽

搜索

加入Linux Docker群與本地Windows Docker進行測試



我當前正在嘗試連接/加入Linux Docker Swarm集群和我的Windows機器,以便測試堆棧而不必將堆棧反復發送到Linux下的測試集群。我的問題是我無法使用Windows Docker加入群集。

我的集群最初有1名經理和4名工人。我最近創建並添加了一個新的管理器,以便將我的Windows Docker節點添加為管理器。有了這個,我不應該對經理仲裁有任何問題(因為我的兩位經理將永遠在線,我的Windows Docker可能隨時被中斷)。

我配置了我的本地防火墻 - 以及我的Linux集群的每個節點 - 接受端口上的連接(以下內容可以在本文檔):

  • 用於群集管理通信的TCP端口2377
  • 用於節點間通信的TCP和UDP端口7946
  • 用於覆蓋網絡流量的UDP端口4789

我的群集中的廣告網絡是 192.168.0.0/24 ,我的經理的IP地址之一是 192.168.0.100 ,我的PC的IP地址是 192.168.0.143 (同一網絡)。他們可以ping對方,我測試了之前定義的端口。

所以,當我在管理器上執行 docker swarm join-token manager 時,我有這樣的事情:

docker swarm join --token SWMTKN-1-27hzpcnek5... 192.168.0.200:2377

如果我將其復制/粘貼到我的電腦:

Error response from daemon: manager stopped: can't initialize raft node: rpc error: code = Unknown desc = could not connect to prospective new cluster member using its advertised address: rpc error: code = DeadlineExceeded desc = context deadline exceeded

但是,即使出現此錯誤,在我的群集上,如果我運行 docker node ls ,我的節點也會出現在列表中:

8380zb5jeke0elwohr7aieke8     linuxkit-00155d00d946   Ready               Active

但在我的PC上,Docker認為它不是集群的成員:

Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.

Docker版本在群集和PC上有所不同:

  • Cluster:
    • Client: 17.09.1-ce
    • Server: 17.09.1-ce
  • PC:
    • Client: 18.03.1-ce
    • Server: 18.03.1-ce

問題可能來自於此嗎?

N.B。:我在Windows上使用Uashntu上的Bash,但結果在PowerShell上是一樣的。

註: 2:我不知道它是否有用,但由於Docker for Windows使用Hyper-V,我有一個NAT接口: 10.0.75.0/24 (並且VM的IP地址是 10.0 .75.1 </代碼>)。我試圖將此界面用作廣告地址和收聽地址,但返回的問題是相同的

有沒有人遇到過這個問題?有任何想法嗎?

謝謝! :)

EDIT 1:

與@Micitch的答案不一致,經過測試,我認為管理者的Docker版本之間沒有任何問題。

正如我在我之前關於BMitch答案的評論,我必須將選項 - advertise-addr 192.168.0.200 - 這是我的領導經理地址 - 添加到docker join命令。在此之前,我使用了 - advertise-addr 192.168.0.143 ,我的PC地址。

我希望它會幫助別人。

編輯2:

如果我在我的電腦上運行 docker info ,我得到了這個:

Swarm: active
 NodeID: o9wehjcyhe3n6xxzy1epnhxdp
 Error: rpc error: code = Unknown desc = The swarm does not have a leader. It's possible that too few managers are online. Make sure more than half of the managers are online.
 Is Manager: true
 Node Address: 192.168.0.200
 Manager Addresses:
  192.168.0.200:2377
  192.168.0.200:2377
  192.168.0.201:2377

有兩個管理員的地址為 192.168.0.200:2377

編輯3:

我終於放棄並在另一臺機器上安裝了Linux服務器以加入集群。這不是我想要的,但我現在可以工作了。

如果有任何關於此問題的信息,我邀請您分享。謝謝 :)

轉載註明原文: 加入Linux Docker群與本地Windows Docker進行測試

一共有 1 個回答:

您不能在群集管理器上混合使用docker引擎版本。他們需要每個都運行相同的版本,特別是在添加,刪除,升級和降級節點時。當您需要在管理器上升級引擎時,您可以在不升級/降級的情況下升級引擎,但我會盡量減少此狀態下的時間並避免使用群中的任何新功能。

還不建議將第二個管理器添加到群集。如果出現任何問題,例如您目前遇到的問題,只需運行一個管理員就會失去法定人數。實際上,您將潛在的故障點加倍,而不是創建HA基礎架構。使用仲裁,您至少需要3個節點才能成為管理員才能丟失單個節點。最好通過首先將其他管理器添加為工作程序,然後在驗證連接後將這些節點提升為管理器,從而對現有集群執行此操作。