我创建了以下pod:
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 。
我遗漏了什么?
为什么在我创建服务之前它不会成立?
发生这种情况是因为您ash在busybox 中使用它并且它具有不同的行为(与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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。