移除故障节点后,Docker Swarm中的孤立任务

时间:2018-11-06 10:43:48

标签: docker docker-swarm

上周,我不得不从Docker Swarm集群中删除发生故障的节点,而使在该节点上运行的某些任务处于所需状态“删除”。

即使在删除堆栈并使用相同的名称重新创建堆栈之后,docker stack ps stackname仍会显示它们。

有趣的是,在重新创建堆栈之后,任务仍然存在,但未分配节点。 screenshot of docker stack ps

这是到目前为止我尝试“清理”堆栈的方法:

  • 重新创建具有相同名称的堆栈
  • docker container prune
  • docker volume prune
  • docker system prune

是否可以删除特定任务?

以下是列表中的第一个任务docker inspect fkgz0oihexzs的输出:

[
  {
    "ID": "fkgz0oihexzsjqwv4ju0szorh",
    "Version": {
      "Index": 14422171
    },
    "CreatedAt": "2018-11-05T16:15:31.528933998Z",
    "UpdatedAt": "2018-11-05T16:27:07.422368364Z",
    "Labels": {},
    "Spec": {
      "ContainerSpec": {
        "Image": "redacted",
        "Labels": {
          "com.docker.stack.namespace": "redacted"
        },
        "Env": [
          "redacted"
        ],
        "Privileges": {
          "CredentialSpec": null,
          "SELinuxContext": null
        },
        "Isolation": "default"
      },
      "Resources": {},
      "Placement": {
        "Platforms": [
          {
            "Architecture": "amd64",
            "OS": "linux"
          }
        ]
      },
      "Networks": [
        {
          "Target": "3i998stqemnevzgiqw3ndik4f",
          "Aliases": [
            "redacted"
          ]
        }
      ],
      "ForceUpdate": 0
    },
    "ServiceID": "g3vk9tgfibmcigmf67ik7uhj6",
    "Slot": 1,
    "Status": {
      "Timestamp": "2018-11-05T16:15:31.528892467Z",
      "State": "new",
      "Message": "created",
      "PortStatus": {}
    },
    "DesiredState": "remove"
  }
]

1 个答案:

答案 0 :(得分:0)

我有同样的问题。我在this instructions之后解决了这个问题:

docker run --rm -v /var/run/docker/swarm/control.sock:/var/run/swarmd.sock dperny/tasknuke <taskid>

请确保使用完整的长任务ID,否则将无法正常工作(在您的情况下为fkgz0oihexzsjqwv4ju0szorh)。