在kubernetes中,如果某个 pod 出于某种原因宕机,准入控制器将重新启动它。
我们称这种机制为自我修复。
我从未使用过docker-compose,但我想知道:是一样的吗?
在kubernetes中,如果某个 pod 出于某种原因宕机,准入控制器将重新启动它。
我们称这种机制为自我修复。
我从未使用过docker-compose,但我想知道:是一样的吗?
当使用docker-compose
或现在docker compose
(使用空格)部署时,您将部署到单个节点。您可以使用处理崩溃应用程序的重启策略将服务定义为自动重启。但是,在某些情况下,网络或卷等外部因素未处于良好状态,我已经看到导致定义被 docker 视为无效,此时它停止尝试重新启动服务。
还有 Swarm Mode,它是一个类似于 Kubernetes 的编排器,它可以使用docker-compose.yml
来定义目标状态,它会继续重新启动服务以从中断中恢复,并在集群中的一个节点出现故障时将它们迁移到另一个节点。
要在 docker 的上下文中实现自愈,可以像在 Kubernetes 中一样创建服务。但是只有在 swarm 模式下使用 Docker 时才能创建服务。
要启用 swarm,请使用:docker swarm init
.
然后继续创建一个服务,如:
docker service create [service-name] [--options [values]...]
如果您想利用 docker-compose 创建服务,以下是您可以为 Postgres 数据库执行此操作的方法:
version: "3.1"
services:
psql:
image: postgres
secrets:
- psql_user
- psql_password
environment:
POSTGRES_USER_FILE: /run/secrets/psql_user
POSTGRES_PSWD_FILE: /run/secrets/psql_pass
secrets:
psql_user:
file: ./psql_user.txt
psql_password:
file: ./psql_pass.txt
最后,继续并docker-compose up
在 docker-compose.yaml 所在的同一目录中使用它,它将使您的 psql 服务启动并运行。
详细说明一下,docker-compose 本身并不是一个编排器。docker-compose 是一种使用单个文件和单个命令同时启动或停止多个容器的机制。
此外,必须声明 docker-compose 是一个测试实用程序,并不打算在生产中使用。对于生产用途,请查看stack。