[英]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"
}
}
提前致謝,諾迪爾。
回答 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.