kubernetes - K8s 上 pod 中的容器初始化顺序
问题描述
我想在一个 pod 上运行两个容器。
container1
是一个尝试连接到在 . 上运行的 SQL Server 数据库的测试container2
。
如何确保 sql 容器 ( container2
) 在启动前运行并准备就绪container1
?
initContainer
在这里不起作用,因为它将在两个容器之前运行。
这是我的 compose.yaml:
apiVersion: v1
kind: Pod
metadata:
name: sql-test-pod
labels:
name: sql-test
spec:
restartPolicy: Never
containers:
- name: my-sqldb
image: docker-registry.com/database
imagePullPolicy: Always
resources:
limits:
memory: "4096Mi"
cpu: "750m"
requests:
memory: "4096Mi"
cpu: "750m"
- name: tests
tty: true
stdin: true
image: docker-registry.com/test
imagePullPolicy: Always
resources:
limits:
memory: "4096Mi"
cpu: "750m"
requests:
memory: "4096Mi"
cpu: "750m"
env:
- name: sqlhostname
value: "SqlHostnamePlaceholder"
nodeSelector:
kubernetes.io/os: windows
tolerations:
- key: "windows"
operator: "Equal"
value: "2019"
effect: "NoSchedule"
解决方案
你不能用当前的实现来做到这一点kubernetes
:一个 pod 中的所有容器将同时启动(除了 init 容器)。
一种解决方案是增强代码test container
以检测 的状态db container
,等待直到准备好。