我正在跟踪https://kubernetes.io/docs/concepts/workloads/pods/init-containers/#init-containers-in-use
上的文档示例我创建了以下广告连播:
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
initContainers:
- name: init-myservice
image: busybox
command:
[
"sh",
"-c",
"until nslookup myservice; do echo waiting for myservice; sleep 2; done;",
]
- name: init-mydb
image: busybox
command:
[
"sh",
"-c",
"until nslookup mydb; do echo waiting for mydb; sleep 2; done;",
]
containers:
- name: myapp-container
image: busybox
command: ["sh", "-c", "echo The app is running! && sleep 3600"]
但是我还没有创建服务(myservice, mydb
)。
我期望部署到直到创建服务为止,但这只是继续部署并创建名为“ myapp-pod
”的pod。
我在跑步中错过了什么吗?
为什么在创建服务之前它不成立?
答案 0 :(得分:3)
发生这种情况是因为您在busybox中使用ash
,并且它具有不同的行为(与bash不同)。所以您的脚本实际上到此结束。
您可以自己在busybox中尝试它:
kubectl run -i --tty busybox --image=busybox --restart=Never -- sh
然后使用您的命令:
until nslookup myservice; do echo waiting for myservice; sleep 2; done;
要解决此问题,您可以尝试其他操作,例如 alpine 。
kubectl run -i --tty alpine --image=alpine --restart=Never -- sh