状态:守护进程的错误响应:节点 elk12 不明确(找到 2 个匹配项),代码:1

状态:守护进程的错误响应:节点 elk12 不明确(找到 2 个匹配项),代码:1

我正在使用以下环境:带有 Docker CE 的 Debian 9:

# cat /etc/os-release 
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
# docker --version
Docker version 17.09.0-ce, build afdb6d4
# 

docker node ls

# docker node ls | grep elk12
2keku0oj8zhsy6uyvyl4gd4d7     elk12               Down                Active              Reachable
tbwbpkl5qys4wwxbisga3y2oe *   elk12               Ready               Active              Reachable
# docker node inspect elk12
[]
Status: Error response from daemon: node elk12 is ambiguous (2 matches found), Code: 1
#

我无法使用docker node rm elk12,因为根据上面的输出我有 2。

如何从列表中删除“关闭”节点,最好不影响工作集群)。我不相信我还有那个节点(可能是很久以前的一些残留物)...

请指教。


更新:

# docker node rm 2keku0oj8zhsy6uyvyl4gd4d7
Error response from daemon: rpc error: code = FailedPrecondition desc = node 2keku0oj8zhsy6uyvyl4gd4d7 is a cluster manager and is a member of the raft cluster. It must be demoted to worker before removal
# docker node demote 2keku0oj8zhsy6uyvyl4gd4d7
Manager 2keku0oj8zhsy6uyvyl4gd4d7 demoted in the swarm.
# docker node rm 2keku0oj8zhsy6uyvyl4gd4d7
2keku0oj8zhsy6uyvyl4gd4d7
# docker node ls | grep elk12
tbwbpkl5qys4wwxbisga3y2oe     elk12               Ready               Active              Reachable
# 

答案1

解释了您遇到的具有相同名称但不同 ID 的重复节点的问题这里,可能是离开群集并重新加入群集的节点,管理器重新启动...

如果您想删除重复的节点并摆脱那个模棱两可的警告,您可以使用哈希 ID 而不是名称:

docker node rm 2keku0oj8zhsy6uyvyl4gd4d7

如果你想删除另一个名为 elk12 的节点,该节点似乎是一个管理器,因此你应该谨慎行事,因为如果没有足够的管理器,你可能会遇到麻烦达成共识。如果您觉得删除该管理器节点是安全的,因为您的群组中有足够的节点作为管理器运行,那么您应该执行以下操作:

  1. 降级管理节点(docker node demote)。这样该节点不再是管理节点,而是作为工作节点运行。
  2. 排空工作节点(docker node dry)。在 elk2 中运行的容器将被移动到集群中的其他工作节点。
  3. 让工作节点离开 Swarm(elk2 节点内部的 docker swarm leave)
  4. 删除节点(docker node rm ...)

相关内容