作用:job作为K8S中的一个资源对象,可实现用户数据初始化,但是job资源声明周期很短
job资源应用实例
1、编写一个job资源对象
# vim job.yaml
kind: Job
apiVersion: batch/v1
metadata:
name: job-mysql-init
spec:
template:
spec:
containers:
- name: job-mysql-init-container
image: centos:7.9.2009
command: ["/bin/sh"]
#使用/bin/sh -c命令传参数到/cache/data.log文件中
args: ["-c","echo data init job at `data +%Y-%M-%D_%H-%M-%S` >> /cache/data.log"]
volumeMounts: #挂载存储卷
- mountPath: /cache #把存储卷cache-volume挂载到容器的/cache目录下,也就是把宿主机的/tmp/jobdata挂载到容器的/cache目录下
name: cache-volume #存储卷名称,会引用下面定义的资源
volumes: #声明存储卷
- name: cache-volume #存储卷的名称是cache-volume
hostPath:
path: /tmp/jobdata #存储卷的路径是宿主机的/tmp/jobdata,如果没有kubelet会自动创建
restartPolicy: Never
2、创建资源对象
# kubectl apply -f job.yaml
它会下载centos镜像,而后把数据写入 /cache/data.log文件中,这个文件是容器的,但是挂载在宿主机的/tmp/jobdata目录上的,因此看这个资源启动在哪个node节点上就可以查看这个宿主机目录了
到宿主机172.31.7.111节点看一下(可以看见宿主机有这个文件了,只是内容可能写的有点问题,没有展现出是时间,只有前面的字符,不过不印象实验结果)