我正在尝试使用 ConfigMap 在 Kubernetes 中设置 Cron 作业,并将 shell 脚本安装到卷。我有有效的 YAML,但第 9 行抛出一个错误,指出它需要一个字符串:
apiVersion: v1
kind: ConfigMap
metadata:
name: elasticdump-configmap
namespace: default
data:
job.schedule: "*/5 * * * *"
spec:
restartPolicy: OnFailure
containers:
- name: elasticdump
image: elasticdump/elasticsearch-dump
imagePullPolicy: IfNotPresent
command: ["/bin/sh", "-c", "elasticdump.sh"]
volumeMounts:
- mountPath: /opt/data
name: blob01
resources:
requests:
memory: 1Gi
limits:
memory: 5Gi
volumes:
- name: blob01
persistentVolumeClaim:
claimName: pvc-blob
configMap:
name: elasticdump-configmap
items:
- key: elasticdump.sh
path: elasticdump.sh
我知道我在 YAML 结构中做错了一些事情,但我对 Kubernetes 还很陌生,所以即使有一点提示,我也会很感激。
正如docs中所述:
ConfigMap 是一个 API 对象,可让您存储配置 其他要使用的物体。
因此,不可能以这种方式定义 CronJob。请查看名为 CronJob
的特殊 k8s 对象apiVersion: batch / v1
kind: CronJob
metadata:
name: elasticdump - configmap
namespace: default
spec:
schedule: "*/5 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: elasticdump
image: elasticdump / elasticsearch - dump
imagePullPolicy: IfNotPresent
command: ["/bin/sh", "-c", "elasticdump.sh"]
volumeMounts:
- mountPath: / opt / data
name: blob01
resources:
requests:
memory: 1
Gi
limits:
memory: 5
Gi
volumes:
- name: blob01
persistentVolumeClaim:
claimName: pvc - blob
configMap:
name: elasticdump - configmap
items:
- key: elasticdump.sh
path: elasticdump.sh
restartPolicy: OnFailure