当前位置: 首页 > 知识库问答 >
问题:

如何在kubernetes作业中创建init容器?

申屠乐池
2023-03-14

在job.yaml下面用于创建作业。未创建初始化容器。

[root@app]#kubectl版本客户端版本:version.info{Major:“1”,Minor:“15”,GitVersion:“v1.15.5”,GitCommit:“”,GitTreeState:“Clean”,BuildDate:“2019-10-15T19:16:51Z”,GoVersion:“Go1.12.10”,编译器:“GC”,平台:“Linux/AMD64”}服务器版本:version.info{Major:“1”,Minor:“15”,GitVersion:“v1.15.5”,GitCommit:“”,GitTreeState:“Clean”,BuildDate:“2019-10-15T19:07:57Z”,GoVersion:“Go1.12.10”,Complier Lere:“GC”,平台:“Linux/AMD64”}

apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  template:
    metadata:
      name: pi
      annotations:
        pod.beta.kubernetes.io/init-containers: '[
          {
            "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;"]
          }
        ]'
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never

共有1个答案

闻安宜
2023-03-14

InitContainers在pod规范中设置。而不是元数据。Pod规范对于作业、部署或创建Pod的任何内容都是相同的。

apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  template:
    metadata:
      name: pi
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      initContainers:
      - name: init-myservice
        image: busybox:1.28
        command: ["sh", "-c", "until nslookup myservice; do echo waiting for myservice; sleep 2; done;"]
      - name: init-mydb
        image: busybox:1.28
        command: ["sh", "-c", "until nslookup mydb; do echo waiting for mydb; sleep 2; done;"]
      restartPolicy: Never
 类似资料:
  • 是否可以将kubernetes作业作为我的kubernetes吊舱的初始容器? 我想只有在kubernetes作业成功达到完成状态后才启动kubernetes pod/部署。如果以上都不行,还有其他出路吗?我不能使用外部脚本检查等,然后启动我的pod。

  • 我已经创建了一个有2个INIT容器的作业荚,我的作业成功完成,但没有INIT容器的迹象 对我来说,作业应该在开始之前等待2个init容器的完成 操作系统为Red Hat Enterprise Linux Server 7.3(Maipo) 提前感谢您的帮助。

  • 问题内容: 我想在容器的MySQL上设置初始数据。在docker-compose.yml中,此类代码可以在运行容器时创建初始数据。 但是,运行时如何在Kubernetes上创建初始数据? 问题答案: 根据MySQL Docker映像README,与容器启动时的数据初始化有关的部分是确保所有初始化文件都已安装到容器的文件夹中。 您可以在中定义初始数据,然后将相应的卷挂载到pod中,如下所示:

  • 我试图在Google Container Engine(GKE)上创建一个kubernetes NFS卷,并让部署使用它。 我在github存储库kubernetes-nfs-volume-on-gke中显示了以下几个步骤: 创建GKE集群和GCE持久化磁盘 配置kubectl处理GKE集群的上下文 创建PersistentVolume(PV)和PersistentVolumeClaim(PVC)

  • 我试图找到一个解决方案,在Kubernetes部署的应用程序中运行cron作业,而不会出现不必要的重复。让我描述一下我的场景,给你一点背景。 我想安排在指定日期执行一次的作业。更准确地说:创建这样一个作业可以在任何时候发生,它的执行日期只有在那个时候才知道。需要做的工作总是一样的,但是需要参数化。 我的应用程序在库伯内特斯集群中运行,我不能假设在任何时候都只有一个实例在运行。因此,创建所述作业将导

  • 但不知何故,豆荚卡在“容器创建”的状态,当我运行docker图像时,我看不到nginx图像被拉出。通常nginx图像没有那么大,所以现在必须已经拉了(15分钟)。kubectl description pods给出了pod沙箱创建失败的错误,kubernetes将重新创建它。 我搜索了关于这个问题的所有内容,并尝试了stackoverflow上的解决方案(重新启动以重新启动集群,搜索描述豆荚,新的