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

我正在使用以下环境:Debian 9与Docker CE:

# 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。

如何从列表中删除“down”节点,最好不影响工作集群)。 我不相信我已经有了这个节点(可能是很久以前的一些剩菜)…

请指教。


更新:

 # 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 # 

你有一个重复的节点具有相同的名称,但ID不同的问题在这里解释,可能是一个节点,离开了群体,并重新join它,经理重新启动…

如果你想删除重复的节点,并摆脱这种模糊的警告,你可以使用哈希ID而不是名称:

 docker node rm 2keku0oj8zhsy6uyvyl4gd4d7 

如果你想删除名为elk12的另一个节点,看起来这个节点是一个pipe理者,所以你应该谨慎行事,因为如果没有足够的pipe理者达成共识 ,你可能会遇到麻烦。 如果您觉得可以安全地删除pipe理器节点,因为您的群集中有足够的节点作为pipe理器运行,则应执行以下操作:

  1. 降级pipe理器节点(docker节点降级)。 所以这个节点不再是一个pipe理节点,而是作为一个工作节点来运行。
  2. 排空worker节点(docker node drain)。 运行在elk2中的容器将被移动到集群中的其他工作节点。
  3. 使工作者节点离开Swarm(docker swarm离开elk2节点)
  4. 删除节点(docker node rm …)