docker - pod 中(在复制 Controller 中)的短期 kubernetes 容器 (/sidekick)

标签 docker kubernetes

我有一个 ReplicationController,在 pod 中包含两个容器,第一个是长期存在的 pod,第二个在 RC 启动 POD 时执行一些维护任务。然而,由于第二个容器的生命周期很短,因此当它完成启动任务时它会自行停止。 当 Kuberbetes 注意到这一点时,它会杀死 POD 并启动一个新的 POD...

在 Kuberbetes 中处理此问题的正确方法是什么?

最佳答案

正如您已经注意到的,根据设计,pod 中的所有容器注定会一起生存和消亡。如果不知道您的助手需要准确执行哪种维护任务,则很难判断您的最佳选择是什么。一般来说,我可以想到三种方法:

  1. 保持维护容器运行。这可能是一个相当丑陋的解决方案,因为它浪费资源。只有当维护任务可以从定期运行中受益时,这才有意义。

  2. 将维护任务移至主容器,有效地将多容器 Pod 转换为单容器 Pod。我假设您可以异步运行该任务(因为您已经能够在单独的容器中运行它);如果由于某些原因不能,请考虑修改 readiness and liveness probes相应地,以便您的容器在有资格终止之前有足够的时间完成所有启动过程。

  3. 考虑调整您的设计,以便维护任务可以作为单独的 Pod 运行(或者甚至可以作为 job )运行。然后,您需要管理所有依赖项并通过正确组合 Kubernetes 原语来自行连接。

关于docker - pod 中(在复制 Controller 中)的短期 kubernetes 容器 (/sidekick),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37256645/

相关文章:

go - "Memory used"公制 : Go tool pprof vs docker stats

windows - 如何从容器内关闭主机?

docker - 在每次部署中,构建一个包含应用程序的新 docker 镜像而不是仅仅更新应用程序有什么好处?

kubernetes - Helm Charts 在不同的命名空间中创建 secret

kubernetes - Kubernetes 中的 RBAC 错误

mysql - 无法使用 Prometheus、Docker 和 prom/mysqld-exporter 镜像监控 MySQL

Docker 更新后 Mysql 表丢失 : "TableName doesn' t exist in engine"

docker - 使用 docker-compose 访问 localhost 和 docker 网络

c# - 在Kubernetes中公开为clusterIP的Access Service API

kubernetes - 大使服务保持 "pending"