容器服务Swarm集群节点调度异常

容器服务Swarm集群节点调度异常

更新时间:2018-10-12 07:50:09

问题描述

在容器服务控制台中创建服务使用标签为“aliyun.node_index=2”的节点,应用发布的时候,出现“Unable to find a node that satisfies the following conditions [port 10080 (Bridge mode) port 5008 (Bridge mode)]”报错,如下图所示。之前的一段时间都有重新发布的操作,没有出现问题,尝试切换到别的节点可以正常发布,但是切回原来的节点还是不可以正常发布。

问题原因

端口被未运行的容器占用。

解决方案

集群管理会检查所有的容器来防止端口配置冲突,即使没有在运行状态的容器,如果已经声明过端口映射。相应的宿主机端口也会标记为已占用。
  1. 登录服务器,执行如下命令,查看是否存在问题描述中报错的端口。
    netstat -an|grep LISTEN|grep -v LISTENING
    
    系统显示类似如下,确认没有发现问题描述中报错的端口。
  2. 执行如下命令,列出运行中和未运行的容器信息。
    docker ps -a
    
    系统显示类似如下,有一个容器STATUS为“Created”。
  3. 执行如下命令,查看分配的端口,确认存在报错的端口。
    docker inspect [$Container_ID]
    
    注:[$Container_ID]为步骤2中查询到的CONTAINER ID。
  4. 清除占用端口的容器或者进程,也可以调整容器端口映射的宿主机端口避免冲突。

适用于

  • 容器服务