【问题标题】:Can I add initContainers to a kubernetes-cronjob?我可以将 initContainers 添加到 kubernetes-cronjob 吗?
【发布时间】:2019-11-07 02:32:52
【问题描述】:

我想要一个 initContainer 在我的 kubernetes cronjob 正在运行的容器之前运行。它用于安装 kubectl。有没有办法做到这一点?

我尝试将 initContainer 参数添加到 cronjob.yaml 文件中,但它引发了错误。

我的 containerInit 的代码如下:

initContainers:
- name: install-kubectl
  image: allanlei/kubectl
  volumeMounts:
  - name: kubectl
    mountPath: /data
  command: ["cp", "/usr/local/bin/kubectl", "/data/kubectl"]

我的 cronjob 需要能够访问 kubectl。这就是我试图这样做的原因。对于如何解决此问题的任何建议,我表示感谢。

【问题讨论】:

  • initContainers 是 PodSpec 的一部分,所以应该没有问题。也许您可以包含完整的作业 deployment.yaml 和错误。
  • 它应该可以工作,错误是什么?另请注意,节点上已经安装了 kubectl,重要的部分是获取正确的 KUBECONFIG,以便 kubectl 不会联系 localhost 端口 8080
  • 是否有任何答案解决了您的问题?如果可以,请您标记已回答的问题吗?

标签: kubernetes google-kubernetes-engine kubernetes-cronjob


【解决方案1】:

是的,您可以在 CronJob 模板中使用 InitContainers。

像这样:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: example
  namespace: default
spec:
  schedule: '*/1 * * * *'
  jobTemplate:
    spec:
      template:
        spec:
          initContainers:
            - name: busybox
              image: busybox
              command:
                - echo
                - initialized
          containers:
            - name: pi
              image: perl
              command:
                - perl
                - '-Mbignum=bpi'
                - '-wle'
                - print bpi(2000)
          restartPolicy: OnFailure

【讨论】:

    【解决方案2】:

    您可以将 kubectl 安装到您在那里使用的镜像中。

    【讨论】:

      【解决方案3】:

      您可以直接在 docker 镜像中安装 kubectl 并在 cronjob 中使用该镜像。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-12
        • 1970-01-01
        • 2017-10-24
        • 2014-02-07
        • 2018-07-23
        • 2019-01-31
        • 2013-02-28
        相关资源
        最近更新 更多