【问题标题】:Do init containers run on the same node as their app container in GKE初始化容器是否与 GKE 中的应用容器在同一节点上运行
【发布时间】:2019-03-05 20:36:34
【问题描述】:

我只是想了解一下我可以在 kubernetes 中使用哪些 init 容器。

我有一个在具有本地 ssd 的节点上运行的应用程序容器。我计划通过本地卷静态配置器执行此操作,并让 pod 具有持久卷声明 - 我的理由是我有 1-1 节点-pod 关系,我希望能够使用节点/pod 自动缩放。我的应用容器需要从外部存储桶中提取一些数据才能工作,这就是我计划让我的 init 容器做的事情。

我的问题是;是否保证我的 init 容器和 app 容器将在同一个节点上执行?如果是这样,我假设他们可以挂载同一个磁盘,而无需使用静态配置擦除它们之间的磁盘吗?

【问题讨论】:

    标签: google-kubernetes-engine


    【解决方案1】:

    是的,它们在同一个节点上运行,init 容器是 Pod 的一部分:

    Pod 中的容器共享一个 IP 地址和端口空间,始终处于同一位置并共同调度,并在同一节点上的共享上下文中运行。

    and:

    一个 Pod 可以有多个容器在其中运行应用程序,但它也可以有一个或多个 Init Containers,它们在应用程序容器启动之前运行。

    您可以在 init 容器和您的 pod 之间共享一个卷:

    apiVersion: apps/v1beta2
    kind: Deployment
    metadata:
      name: deploy
    spec:
      replicas: 1
      template:
        spec:
          volumes:
          - name: shared-data
            emptyDir: {}
          initContainers:
          - name: init
            image: <xxx>
            volumeMounts:
            - name: shared-data
              mountPath: /env
          containers:
          - name: <my-container>
            image: <my-image>
            volumeMounts:
            - name: shared-data
              mountPath: /env
    

    将您需要的任何数据写入共享卷,您就可以从您的容器中访问它。

    【讨论】:

      猜你喜欢
      • 2022-06-29
      • 1970-01-01
      • 2021-05-02
      • 2020-09-18
      • 2018-08-21
      • 2022-01-16
      • 1970-01-01
      • 2020-07-16
      • 2022-08-05
      相关资源
      最近更新 更多