简介
在这个实验中,你将学习如何管理和修改 Docker Swarm 的设置。你将从在你的机器上初始化一个 Docker Swarm 开始,使其成为一个集群管理器。
初始化完成后,你将探索如何使用 docker swarm inspect
命令查看集群的当前配置。这将使你能够了解默认设置。然后,本实验将指导你使用 docker swarm update
命令更新集群的关键参数,具体是节点证书过期时间和任务历史记录保留限制。最后,你将通过再次检查集群设置来验证你的更改是否已成功应用。
在这个实验中,你将学习如何管理和修改 Docker Swarm 的设置。你将从在你的机器上初始化一个 Docker Swarm 开始,使其成为一个集群管理器。
初始化完成后,你将探索如何使用 docker swarm inspect
命令查看集群的当前配置。这将使你能够了解默认设置。然后,本实验将指导你使用 docker swarm update
命令更新集群的关键参数,具体是节点证书过期时间和任务历史记录保留限制。最后,你将通过再次检查集群设置来验证你的更改是否已成功应用。
在这一步中,你将学习如何初始化一个 Docker Swarm。Docker Swarm 是一组运行 Docker 的机器,它们组成一个集群。加入集群后,你可以继续运行你熟悉的 Docker 命令,集群会将这些命令分发到各个节点上执行。
要初始化一个集群,你可以使用 docker swarm init
命令。这个命令会将当前机器转变为集群管理器。
打开终端并运行以下命令来初始化 Docker Swarm:
docker swarm init
你应该会看到类似以下的输出,这表明集群已成功初始化,并提供了一个将其他节点加入该集群的命令:
Swarm initialized: current node (xxxxxxxxxxxx) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 192.168.99.100:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
这个命令使当前机器成为集群管理器。在实际场景中,为了实现高可用性,通常会有多个管理器,但在这个实验中,一个管理器就足够了。
在这一步中,你将学习如何查看 Docker Swarm 的当前设置。这有助于你了解当前的配置,并在更新设置后验证更改是否生效。
要查看集群设置,你可以使用 docker swarm inspect
命令。该命令会提供有关集群的详细信息,包括其 ID、创建日期和各种配置设置。
打开终端并运行以下命令来检查 Docker Swarm:
docker swarm inspect
输出将是一个包含集群配置的 JSON 对象。查找 Spec
部分,其中包含可配置的设置。注意 Orchestration
和 Dispatcher
字段,因为这些字段包含与任务历史记录和节点证书相关的设置。
例如,你可能会看到类似以下的输出(具体值会有所不同):
[
{
"ID": "xxxxxxxxxxxx",
"Version": {
"Index": 10
},
"CreatedAt": "2023-10-27T10:00:00.000000000Z",
"UpdatedAt": "2023-10-27T10:00:00.000000000Z",
"Spec": {
"Orchestration": {
"TaskHistoryRetentionLimit": 5
},
"Raft": {
"SnapshotInterval": 10000,
"KeepOldSnapshots": 0,
"LogEntriesForSlowFollowers": 500,
"ElectionTick": 3,
"HeartbeatTick": 1
},
"Dispatcher": {
"HeartbeatPeriod": 5000000000
},
"CAConfig": {
"NodeCertExpiry": 7776000000000000,
"ExternalCAs": null,
"SigningCACert": "...",
"SigningCAKey": "...",
"ForceRotate": 0
},
"TaskDefaults": {
"LogDriver": null
}
},
"TLSInfo": {
"TrustRoot": "...",
"CertIssuerSubject": "CN=swarm-ca",
"CertIssuerPublicKey": "..."
},
"RootRotationInProgress": false
}
]
在 Spec
部分,你可以在 Orchestration
下找到 TaskHistoryRetentionLimit
,在 CAConfig
下找到 NodeCertExpiry
。这些就是我们将在下一步中修改的设置。
在这一步中,你将学习如何更新 Docker Swarm 中节点证书的有效期。节点证书用于集群节点之间的安全通信。默认情况下,这些证书在 3 个月后过期。你可以根据安全策略和运营需求调整这个期限。
要更新节点证书的有效期,你可以使用 docker swarm update
命令,并搭配 --cert-expiry
标志。--cert-expiry
的值是一个持续时间字符串,例如,24h
表示 24 小时,720h
表示 30 天(720 小时),或者 0
表示禁用过期(不建议在生产环境中使用)。
让我们将节点证书的有效期更新为 30 天(720 小时)。打开终端并运行以下命令:
docker swarm update --cert-expiry 720h
你应该会看到确认更新的输出:
Swarm updated.
这个命令会更新集群配置,以设置新的证书有效期。此次更新后颁发的新节点证书将具有新的有效期。现有证书仍将根据其原始颁发日期和之前的有效期设置过期,除非你强制进行证书轮换。
在这一步中,你将学习如何更新 Docker Swarm 中的任务历史记录保留限制。任务历史记录保留限制决定了集群历史中保留多少已完成或失败的任务。保留任务历史记录有助于调试和监控,但保留过多记录可能会消耗过多资源。
要更新任务历史记录保留限制,你可以使用 docker swarm update
命令,并搭配 --task-history-limit
标志。--task-history-limit
的值是一个整数,表示要保留的任务数量。
让我们将任务历史记录保留限制更新为 10。打开终端并运行以下命令:
docker swarm update --task-history-limit 10
你应该会看到确认更新的输出:
Swarm updated.
此命令会更新集群配置,以保留最后 10 个已完成或失败任务的历史记录。
在这最后一步中,你将验证在前面步骤中更新的集群设置是否已成功应用。你将再次使用 docker swarm inspect
命令,并检查 NodeCertExpiry
和 TaskHistoryRetentionLimit
的值。
打开终端并运行以下命令来检查 Docker Swarm:
docker swarm inspect
检查输出的 JSON。找到 Spec
部分,然后查看 CAConfig
下的 NodeCertExpiry
和 Orchestration
下的 TaskHistoryRetentionLimit
的值。
你应该会看到 NodeCertExpiry
现在设置为 2592000000000000
(这表示 30 天,以纳秒为单位),并且 TaskHistoryRetentionLimit
设置为 10
。
例如,输出的相关部分应该如下所示:
[
{
...
"Spec": {
"Orchestration": {
"TaskHistoryRetentionLimit": 10
},
...
"CAConfig": {
"NodeCertExpiry": 2592000000000000,
...
},
...
},
...
}
]
通过检查集群配置,你可以确认更新已成功完成。
在本次实验中,你学习了如何使用 docker swarm init
命令初始化 Docker Swarm,将当前机器转变为集群管理器。接着,你探索了如何使用 docker swarm inspect
命令查看当前的集群设置,该命令会提供详细的集群配置 JSON 输出,其中包括包含可配置设置的 Spec
部分。
在完成初始化和检查之后,你练习了更新特定的集群设置。你学习了如何使用 docker swarm update
命令修改节点证书有效期和任务历史记录保留限制。最后,你再次使用 docker swarm inspect
命令并检查输出中更新后的配置,验证了这些更改已成功应用。