簡體   English   中英

指定 Docker 在 Kubernetes pod 上運行的順序

[英]Specify the order Dockers run on Kubernetes pod

我正在嘗試在同一個 Kubernetes pod 上運行兩個 Docker,我希望其中一個 Docker 容器始終先於另一個運行。 我記得學習過在 pod 配置文件上指定這種依賴關系,但現在找不到了。 Kubernetes文檔也沒有解釋它。

這是我從另一個Stackoverflow 問題中采用的帶有兩個容器的示例 pod 配置。 我應該如何更改此 pod 配置以在type2之前運行容器type1

{
  "id": "podId",
  "desiredState": {
    "manifest": {
      "version": "v1beta1",
      "id": "podId",
      "containers": [{
        "name": "type1",
        "image": "local/image"
        },
        {
        "name": "type2",
        "image": "local/secondary"
        }]
    }
  },
  "labels": {
    "name": "imageTest"
  }
}

提前致謝,諾迪爾。

Kubernetes目前不允許指定容器啟動依賴項。

1996年1589年的GitHub問題上有一些討論可能會幫助你。

回答 2021 年,

現在,如果您的第一個容器用於為第二個容器進行初始化,則可以使用Init Containers,

在 Kubernetes 中,init 容器是在同一個 Pod 中的其他容器之前啟動和執行的容器。 它旨在為 Pod 上托管的主應用程序執行初始化邏輯。 例如,創建必要的用戶帳戶、執行數據庫遷移、創建數據庫模式等。

關於如何使用: https : //kubernetes.io/docs/tasks/configure-pod-container/configure-pod-initialization/#create-a-pod-that-has-an-init-container

如果它們都是應用程序容器並且您希望 kubelet 順序部署,那么另一個有趣的讀物

您可以使用 init 容器來阻止一個 pod 並等待另一個。 您可以使用bitnami/kubectl作為帶有 --wait 標志的初始化容器。 或者,您可以使用自定義等待作業

apiVersion: v1
kind: List
items:
  - apiVersion: v1
    kind: Pod
    metadata:
      name: start-first
      labels:
        name: start-first
    spec: &nginx
      containers:
        - name: nginx
          image: nginx
          ports:
            - containerPort: 80
  - apiVersion: v1
    kind: Pod
    metadata:
      name: start-second
      labels:
        name: start-second
    spec:
      <<: *nginx
      initContainers:
        - name: wait-for-first
          image: bitnami/kubectl
          args:
            - wait
            - pod/start-first
            - --for
            - condition=Ready
            - --timeout
            - 60s

你可能得給起始容器就像說一個特定的角色這里 這取決於您的安全設置。

另請注意,不需要將其放在列表中。 為了簡潔起見,我只是使用它來使用錨點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM