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

Orphaned Tasks in Docker Swarm after removal of failed node

上周我不得不从我的 Docker Swarm 集群中删除一个故障节点,留下一些 运行 在该节点上处于所需状态的任务 "Remove"。

即使删除堆栈并以相同的名称重新创建它,docker stack ps stackname 仍然显示它们。

有趣的是,在重新创建堆栈后,任务仍然存在,但没有分配节点。

这是我到目前为止对 "cleanup" 堆栈所做的尝试:

有没有办法删除特定任务?

这是列表中第一个任务 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"
  }
]

我遇到了同样的问题。我按照 this instructions :

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

请务必使用完整的长任务 ID,否则它将无法工作(fkgz0oihexzsjqwv4ju0szorh 在您的情况下)。