开发者社区> 问答> 正文

Init Containers绕过命令

我创建了以下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 。

我遗漏了什么?
为什么在我创建服务之前它不会成立?

展开
收起
k8s小能手 2019-01-11 14:02:21 2246 0
1 条回答
写回答
取消 提交回答
  • 整合最优质的专家资源和技术资料,问答解疑

    发生这种情况是因为您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

    2019-07-17 23:25:19
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载