【问题标题】:Difficulty with different kubernetes pods run using kubetctl apply running same container images sharing directories使用 kubernetes 运行不同的 pod 的困难 kubetctl apply 运行相同的容器镜像共享目录
【发布时间】:2019-11-03 14:19:12
【问题描述】:

我正在尝试通过应用配置文件在集群上使用相同的容器映像运行两个单独的 pod。尽管在两个 pod 都处于活动状态时没有共享或持久卷,但两个 pod 上的相同目录会使用来自另一个 pod 的创建文件进行更新,并且写入访问权限会突然发生变化。使用的容器是直接从 dockerhub 拉取的 jupyter-docker-stacks jupyter/minimal-notebook 镜像。运行此容器的这些 pod 是通过应用清单创建的。这两个 pod 有不同的标签和名称。为每个 pod 创建一个具有唯一名称的服务以供访问。

容器的资源是否会像 docker 容器一样在集群上持续存在?我找不到与--rm 标志等效的东西,可以与kubectl apply 一起使用。

谢谢

【问题讨论】:

  • 正如你所描述的,这两个 pod 不应该共享任何东西。不过,如果您可以在问题中包含实际的 pod YAML 会有所帮助。

标签: kubernetes google-kubernetes-engine


【解决方案1】:

如果您想在作业完成后删除 pod,您可能需要应用 job 而不是 pod。 k8s 中job 的想法是启动一个 pod 并完成工作,然后 pod 停止。欲了解更多信息:https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/

【讨论】:

    【解决方案2】:

    $ kubectl apply -f <fileName> 将在 pod 中创建或进行一些更改。如果你想使用 apply 删除 pod,你必须使用 $ kubectl delete -f <fileName>

    关于共享,如果您有 2 个单独的清单,您可以为每个容器指定 volumeMounts。更多信息请阅读documentation 取决于您的需要。

    也正如@Kaizhe Huang 建议的那样,如果您想一次性执行某项操作,可以使用Job;如果您想在主容器运行之前在 POD 中安装某些内容,请尝试使用initContainers。更多关于 initContainers here.

    【讨论】:

      【解决方案3】:

      您可以检查图像的 dockerfile。看看是否有 'VOLUME' 声称。如果有,也许他们在主机上共享相同的卷。不确定,但你可以检查一下。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-04
        • 1970-01-01
        • 2018-08-07
        • 2022-12-22
        • 2019-06-18
        • 1970-01-01
        • 1970-01-01
        • 2020-05-13
        相关资源
        最近更新 更多