排除啟動時非固定IP Address造成Portainer Agent容器錯誤
前情提要:「我們透過 Container Monitoring 發現了一個 Portainer Agent 的錯誤。」最簡單的修正就是每次當 Portainer 發現 Portainer Agent 連不上時,去 Portainer 裡去設定 Portainer Agent 重啟後的新 IP Address。此 Portainer Agent 本身位於 Docker Swarm 的 Overlay 網路上,Overlay 網路預設會分配一個 10.x.x.x/24
,第一條通常是 10.0.0.0/24
,第二條 10.0.1.0/24
以此類推。
docker network create -d overlay skynet
docker network inspect skynet
可以查詢到 IPAM.Config.Subnet
資訊:
[
{
"Name": "skynet",
"Id": "kli3enae47bc47lt6d3cups8l",
"Created": "2019-05-28T07:04:41.5478409Z",
"Scope": "swarm",
"Driver": "overlay",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "10.0.4.0/24",
"Gateway": "10.0.4.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": null,
"Options": {
"com.docker.network.driver.overlay.vxlanid_list": "4099"
},
"Labels": null
}
]
當有服務掛此 skynet Overlay 網路時,就會動態取的一個 IP Address,而且就之前取得錯誤訊息來看,當服務被重啟之後,會重新分派到一個新的 IP Address。
將 Portainer Agent 加入 skynet Overlay 網路:
docker logs agentforsky
2019/05/28 15:18:21 [INFO] serf: EventMemberJoin: 8d7ad9a02d17 10.0.4.4
2019/05/28 15:18:21 [WARN] memberlist: Failed to resolve tasks.portainer_agent: lookup tasks.portainer_agent: no such host
2019/05/28 15:18:21 [INFO] - Starting Portainer agent version 1.2.1 on 0.0.0.0:9001 (cluster mode: true)
2019/05/28 15:19:52 [INFO] serf: EventMemberJoin: 8d7ad9a02d17 10.0.4.6
2019/05/28 15:19:52 [WARN] memberlist: Failed to resolve tasks.portainer_agent: lookup tasks.portainer_agent: no such host
2019/05/28 15:19:52 [INFO] - Starting Portainer agent version 1.2.1 on 0.0.0.0:9001 (cluster mode: true)
我們讓 Portainer Agent 服務重啟,可以發現,重啟後的 IP Address 更新了。像這類需要固定 IP Address作業的容器怎麼辦?其實很簡單,在 docker run
或時加入 --ip 參數指定固定的 IP Address 即可,例如:--ip="10.0.4.4"
(Compose file 設定 ipv4_address 一樣的道理):
PS C:\> docker logs agentforsky
2019/05/28 15:31:59 [INFO] serf: EventMemberJoin: 561c00ee6eb4 10.0.4.4
2019/05/28 15:31:59 [WARN] memberlist: Failed to resolve tasks.portainer_agent: lookup tasks.portainer_agent: no such host
2019/05/28 15:31:59 [INFO] - Starting Portainer agent version 1.2.1 on 0.0.0.0:9001 (cluster mode: true)
2019/05/28 15:32:33 [INFO] serf: EventMemberJoin: 561c00ee6eb4 10.0.4.4
2019/05/28 15:32:33 [WARN] memberlist: Failed to resolve tasks.portainer_agent: lookup tasks.portainer_agent: no such host
2019/05/28 15:32:33 [INFO] - Starting Portainer agent version 1.2.1 on 0.0.0.0:9001 (cluster mode: true)
2019/05/28 15:32:47 [INFO] serf: EventMemberJoin: 561c00ee6eb4 10.0.4.4
2019/05/28 15:32:48 [WARN] memberlist: Failed to resolve tasks.portainer_agent: lookup tasks.portainer_agent: no such host
2019/05/28 15:32:48 [INFO] - Starting Portainer agent version 1.2.1 on 0.0.0.0:9001 (cluster mode: true)
現在很明顯,就算此 Portainer Agent 服務被不斷重啟,還是可以取得固定的 IP Address。這樣就能解決動態 IP Address 造成 Portainer 連線的問題。
沒有留言:
張貼留言
感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。