证书过期后如何恢复Docker Swarm集群

问题描述 投票:0回答:3

我已经设置了一个工作的 Docker Swarm 集群,但几个月后我试图重新使用这个集群,但我发现没有任何效果。

在进行故障排除以了解发生了什么后,我发现了这个错误。

 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: error
  NodeID: 
  Error: error while loading TLS certificate in /var/lib/docker/swarm/certificates/swarm-node.crt: certificate (1 - s3htdkgcv9qifg2jmbpud1gt7) not valid after Sun, 27 Mar 2022 10:27:00 UTC, and it is currently Sun, 19 Jun 2022 04:33:54 UTC: x509: certificate has expired or is not yet valid: 
  Is Manager: false
  Node Address: 10.10.1.10

我已经尝试过像这里一样在网上找到的东西https://stackoverflow.com/a/59086699/5442187

docker swarm leave

然后尝试重新加入

docker swarm join-token manager

=>

来自守护进程的错误响应:此节点不是群管理器。使用 “docker swarm init”或“docker swarm join”将此节点连接到 蜂拥而至再试一次。

docker swarm join-token worker

=>

来自守护进程的错误响应:此节点不是群管理器。使用 “docker swarm init”或“docker swarm join”将此节点连接到 蜂拥而至再试一次。

我如何重新加入/重新认领这个集群?我希望它应该是可能的,否则这将使 Docker Swarm 无法用于生产。

docker docker-compose docker-swarm docker-stack
3个回答
0
投票

通过

docker swarm ca --rotate
旋转群体CA。

在所有注册节点都轮换了他们的 TLS 证书之前,根 CA 轮换不会完成。如果轮换没有在合理的时间内完成,请尝试运行

docker node ls --format '{{.ID}} {{.Hostname}} {{.Status}} {{.TLSStatus}}'
以查看是否有任何节点已关闭或无法轮换 TLS 证书。

https://docs.docker.com/engine/reference/commandline/swarm_ca/


0
投票

集群中只有 2 个节点,所有节点都显示 manager false,命令在两个节点上运行,但没有一个有效

一旦所有的经理都离开了集群,我相信它就消失了。在此之前,您可以对其中一位经理运行以下命令:

docker swarm init --force-new-cluster

现在他们都离开了,您可以从头开始重新创建集群:

# on the manager
docker swarm init

一旦你有了一个新的集群,在管理器上运行:

docker swarm join-token manager # or worker

然后在其他节点上运行上面的 join-token 命令的输出以加入集群。


0
投票

有一种恢复方法,不会丢失已部署的集群服务/堆栈。 错误是抱怨“证书在 2022 年 3 月 27 日星期日 10:27:00 UTC 后无效”。所以我们应该先让证书有效,然后恢复 swarm 服务,并在 swarm 启动并运行时轮换 CA 证书:

  1. 停止码头服务:

    service docker stop

  2. 将日期调回“2022年3月27日10:27:00”,可以更早:

    date -s "27 Mar 2022 10:27:00"

  3. 启动集群服务:

    service docker start

    #check if all the services are up and running

    docker stack ls

  4. 旋转证书:

    docker swarm ca –rotate

  5. 将系统日期设置为当前:

    date -s "19 Apr 2023 06:34:00"

© www.soinside.com 2019 - 2024. All rights reserved.