I want to have an initContainer that runs prior to the container my kubernetes cronjob is running. It's used to install kubectl. Is there a way of doing this?
I tried to add the initContainer-parameter to the cronjob.yaml file but it threw an error.
The code of my containerInit is the following:
initContainers:
- name: install-kubectl
image: allanlei/kubectl
volumeMounts:
- name: kubectl
mountPath: /data
command: ["cp", "/usr/local/bin/kubectl", "/data/kubectl"]
My cronjob needs to be able to access kubectl. That is the reason I'm trying to do this. I'm grateful for any suggestions how I could solve this problem.
You can directly install kubectl inside your docker image and use that image in cronjob.
You could install the kubectl into the image you used there.
Yes, you can use InitContainers in a CronJob template.
Like this:
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