千家信息网

job的简单配置和简易测试

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,下文主要给大家带来job的简单配置和简易测试,希望这些文字能够带给大家实际用处,这也是我编辑job的简单配置和简易测试这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。1.job简单介绍job也
千家信息网最后更新 2026年11月01日job的简单配置和简易测试

下文主要给大家带来job的简单配置和简易测试,希望这些文字能够带给大家实际用处,这也是我编辑job的简单配置和简易测试这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。

1.job简单介绍

job也是种控制器,k8s有两种类型的控制器,一种是服务类控制器,比如deployment,deamonset,replicaset等等.一种是工作任务类控制器,job和cronjon就是工作任务类控制器.

job的简易参数介绍

spec.template格式同PodRestartPolicy仅支持Never或OnFailure单个Pod时,默认Pod成功运行后Job即结束.spec.completions标志Job结束需要成功运行的Pod个数,默认为1,可以理解pod运行的总数.spec.parallelism标志并行运行的Pod的个数,默认为1,可以理解为同时运行的Pod数量.spec.activeDeadlineSeconds标志失败Pod的重试最大时间,超过这个时间不会继续重试.spec.backoffLimit: 指定job失败后进行重试的次数.

2.job简易实例

[root@k8s-node1 job]#cat job1.yaml apiVersion: batch/v1kind: Jobmetadata:  name: pispec:  template:    metadata:      name: pi    spec:      containers:      - name: pi        image: perl        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]      restartPolicy: Never
[root@k8s-node1 job]# kubectl get jobNAME   COMPLETIONS   DURATION   AGEpi     1/1           8m37s      15m[root@k8s-node1 job]# kubectl get podNAME                             READY   STATUS      RESTARTS   AGEbusybox                          1/1     Running     76         28dmysql-7c9cbfcdf8-hxlrm           1/1     Running     7          22dmysql-t-54666b579c-7m5rv         1/1     Running     11         26dmysql-test-647b8db96b-qdxw6      1/1     Running     10         23dpi-5gtpz                         0/1     Completed   0          15mwordpress-pod-74c47cd8dd-dlzvc   1/1     Running     7          22d[root@k8s-node1 job]# kubectl logs pi-5gtpz

修改配置文件,加上参数测试

[root@k8s-node1 job]# cat job1.yaml apiVersion: batch/v1kind: Jobmetadata:  name: pispec:  completions: 3  parallelism: 2  template:    metadata:      name: pi    spec:      containers:      - name: pi        image: perl        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]      restartPolicy: Never

spec.parallelism参数设置了2,因此开始就启动了两个pod

[root@k8s-node1 job]# kubectl get podNAME                             READY   STATUS              RESTARTS   AGEbusybox                          1/1     Running             76         28dmysql-7c9cbfcdf8-hxlrm           1/1     Running             7          22dmysql-t-54666b579c-7m5rv         1/1     Running             11         26dmysql-test-647b8db96b-qdxw6      1/1     Running             10         23dpi-jjpm4                         0/1     ContainerCreating   0          4spi-xffsz                         0/1     ContainerCreating   0          4swordpress-pod-74c47cd8dd-dlzvc   1/1     Running             7          22d
[root@k8s-node1 job]# kubectl get podNAME                             READY   STATUS      RESTARTS   AGEbusybox                          1/1     Running     76         28dmysql-7c9cbfcdf8-hxlrm           1/1     Running     7          22dmysql-t-54666b579c-7m5rv         1/1     Running     11         26dmysql-test-647b8db96b-qdxw6      1/1     Running     10         23dpi-c4qxs                         0/1     Completed   0          43spi-jjpm4                         0/1     Completed   0          55spi-xffsz                         0/1     Completed   0          55swordpress-pod-74c47cd8dd-dlzvc   1/1     Running     7          22d

3.job备份mysql容器数据库

job在什么场景使用呢?

比如数据库备份

最简单的示例,参考见下:

思路是启用一个job,使用的镜像是mysql:5.7(注意密码必须设置),然后执行命令mysqldump --host=mysql-test -uroot -ppassword --databases t1 >t1.sql.备份MySQL容器pod主机名为mysql-test的数据库(注意mysql-test是svc的名字).

[root@k8s-node1 job]# kubectl get svc,podNAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGEservice/httpd-svc    NodePort    10.254.125.1             80:8400/TCP     31dservice/kubernetes   ClusterIP   10.254.0.1               443/TCP         45dservice/mysql        ClusterIP   10.254.209.23            3306/TCP        23dservice/mysql-t      ClusterIP   10.254.177.63            3306/TCP        27dservice/mysql-test   ClusterIP   10.254.177.188           3306/TCP        24dservice/wordpress    NodePort    10.254.88.118            8080:8425/TCP   23dNAME                                 READY   STATUS      RESTARTS   AGEpod/busybox                          1/1     Running     92         29dpod/mysql-7c9cbfcdf8-hxlrm           1/1     Running     17         23dpod/mysql-dump-jw5zh                 0/1     Completed   0          80spod/mysql-t-54666b579c-7m5rv         1/1     Running     21         27dpod/mysql-test-647b8db96b-qdxw6      1/1     Running     19         24dpod/t1-55f6c78557-6xxwd              1/1     Running     0          17mpod/t2-7f459d454c-wk2zb              1/1     Running     0          17mpod/wordpress-pod-74c47cd8dd-dlzvc   1/1     Running     12         23d
[root@k8s-node1 job]# cat job2.yaml apiVersion: batch/v1kind: Jobmetadata:  name: mysql-dumpspec:  template:    metadata:      name: mysql-dump    spec:      containers:      - name: mysql-dump        image: mysql:5.7        env:        - name: MYSQL_ROOT_PASSWORD          value: abc123        command: ["/bin/sh","-c","mysqldump --host=mysql-test -uroot -ppassword --databases t1 >t1.sql"]      restartPolicy: Never

测试执行成功.见下:

[root@k8s-node1 storage]# kubectl get jobNAME         COMPLETIONS   DURATION   AGEmysql-dump   1/1           2s         28m
[root@k8s-node1 storage]# kubectl get podNAME                                      READY   STATUS              RESTARTS   AGEbusybox                                   1/1     Running             81         29dmysql-7c9cbfcdf8-hxlrm                    1/1     Running             7          22dmysql-dump-p4wn7                          0/1     Completed           0          28mmysql-t-54666b579c-7m5rv                  1/1     Running             11         27dmysql-test-647b8db96b-qdxw6               1/1     Running             10         23dnfs-client-provisioner-5bd47b7669-lzv6j   0/1     ContainerCreating   0          6m38swordpress-pod-74c47cd8dd-dlzvc            1/1     Running             7          22d

完美点的示例,把备份的数据解耦出来,加上pvc.

配置pv和pvc,参考见下:

pv

[root@k8s-node1 storage]# cat job-pv1.yaml apiVersion: v1kind: PersistentVolumemetadata:  name: jobpv1spec:  capacity:    storage: 100Mi  accessModes:    - ReadWriteMany  persistentVolumeReclaimPolicy: Retain  storageClassName: nfs  nfs:    path: /mnt/data/jobpv1    server: 192.168.174.130[root@k8s-node1 storage]# kubectl apply -f job-pv1.yaml persistentvolume/jobpv1 created[root@k8s-node1 storage]# kubectl get pvNAME        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                STORAGECLASS   REASON   AGEjobpv1      100Mi      RWX            Retain           Available                        nfs                     7s

pvc

[root@k8s-node1 storage]# cat job-pvc1.yaml apiVersion: v1kind: PersistentVolumeClaimmetadata:   name: jobpvc1spec:   accessModes:     - ReadWriteMany   resources:     requests:       storage: 100Mi   storageClassName: nfs[root@k8s-node1 storage]# kubectl apply -f job-pvc1.yaml persistentvolumeclaim/jobpvc1 created[root@k8s-node1 storage]# kubectl get pvcNAME         STATUS   VOLUME      CAPACITY   ACCESS MODES   STORAGECLASS   AGEjobpvc1      Bound    jobpv1      100Mi      RWX            nfs            4s

把pvc使用到job上

[root@k8s-node1 job]# cat job2.yaml apiVersion: batch/v1kind: Jobmetadata:  name: mysql-dumpspec:  template:    metadata:      name: mysql-dump    spec:      containers:      - name: mysql-dump        image: mysql:5.7        env:        - name: MYSQL_ROOT_PASSWORD          value: abc123        command: ["/bin/sh","-c","mysqldump --host=mysql-test -uroot -ppassword --databases t1 >/mnt/t1.sql"]        volumeMounts:          - name: job-pvc            mountPath: "/mnt"      restartPolicy: Never      volumes:        - name: job-pvc          persistentVolumeClaim:            claimName: jobpvc1
[root@k8s-node1 job]# kubectl apply -f job2.yaml job.batch/mysql-dump created[root@k8s-node1 job]# kubectl get podNAME                             READY   STATUS      RESTARTS   AGEbusybox                          1/1     Running     92         29dmysql-7c9cbfcdf8-hxlrm           1/1     Running     17         23dmysql-dump-jw5zh                 0/1     Completed   0          3smysql-t-54666b579c-7m5rv         1/1     Running     21         27dmysql-test-647b8db96b-qdxw6      1/1     Running     19         24dt1-55f6c78557-6xxwd              1/1     Running     0          16mt2-7f459d454c-wk2zb              1/1     Running     0          15mwordpress-pod-74c47cd8dd-dlzvc   1/1     Running     12         23d

可以去保存pvc的目录下查看,数据已经备份成功,见下

[root@k8s-node3 jobpv1]# pwd/mnt/data/jobpv1[root@k8s-node3 jobpv1]# lst1.sql

4.使用cronjob备份

上面用job备份只是一次性执行结束,对于很多备份是需要持续性备份操作的,持续性备份操作,k8s有cronjob.

就用上面的示例修改

注意cronjob的api和job的api不一样,可用expalin命令检索,见下

[root@k8s-node1 job]# kubectl explain cronjobKIND:     CronJobVERSION:  batch/v1beta1

修改好的cronjob示例见下

[root@k8s-node1 job]# cat cronjob1.yaml apiVersion: batch/v1beta1kind: CronJobmetadata:  name: mysql-dumpspec:  schedule: "*/1 * * * *"  jobTemplate:    spec:      template:        spec:          containers:          - name: mysql-dump            image: mysql:5.7            env:            - name: MYSQL_ROOT_PASSWORD              value: abc123            command: ["/bin/sh","-c","mysqldump --host=mysql-test -uroot -ppassword --databases t1 >/mnt/t1`date +%Y%m%d%H%M`.sql"]            volumeMounts:              - name: job-pvc                mountPath: "/mnt"          restartPolicy: Never          volumes:            - name: job-pvc              persistentVolumeClaim:                claimName: jobpvc1

注释1:schedule: "/1 ",每分钟执行一次
注释2:date +%Y%m%d%H%M,date函数命令,文件名加上日期时间,更能直观*

读取执行cronjob

[root@k8s-node1 job]# kubectl apply -f cronjob1.yaml cronjob.batch/mysql-dump created
[root@k8s-node1 job]# kubectl get cronjobNAME         SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGEmysql-dump   */1 * * * *   False     1        5s              10s
[root@k8s-node1 job]# kubectl get podNAME                                      READY   STATUS      RESTARTS   AGEbusybox                                   1/1     Running     103        32dmysql-7c9cbfcdf8-hxlrm                    1/1     Running     21         26dmysql-dump-1577082660-d58mx               0/1     Completed   0          9s

检索pvc存储目录,可见每分钟保存一个sql文件,见下:

[root@k8s-node3 jobpv1]# pwd/mnt/data/jobpv1[root@k8s-node3 jobpv1]# lltotal 32-rw-r--r-- 1 root root 2447 Dec 23 14:31 t1201912230631.sql-rw-r--r-- 1 root root 2447 Dec 23 14:32 t1201912230632.sql-rw-r--r-- 1 root root 2447 Dec 23 14:33 t1201912230633.sql-rw-r--r-- 1 root root 2447 Dec 23 14:34 t1201912230634.sql-rw-r--r-- 1 root root 2447 Dec 23 14:35 t1201912230635.sql-rw-r--r-- 1 root root 2447 Dec 23 14:36 t1201912230636.sql-rw-r--r-- 1 root root 2447 Dec 23 14:37 t1201912230637.sql

cronjob用来备份数据,非常方便.

对于以上关于job的简单配置和简易测试,大家是不是觉得非常有帮助。如果需要了解更多内容,请继续关注我们的行业资讯,相信你会喜欢上这些内容的。

备份 数据 简易 测试 配置 控制器 控制 运行 成功 示例 参数 命令 数据库 文件 时间 标志 下文 个数 任务 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技有限公司 互联网是第几次科技革命的成果 互联网科技有限公司经营范围 互联网科技社 北京互联网科技公司 银优互联网科技有限公司 赫美联合互联网科技 佩信高科技互联网 科技互联网的估值 成都互联网科技公司100强 知域互联网科技有限公司大骗子 苏州铭阳互联网科技有限公司 互联网在线教育科技创业 互联网科技资金流入 互联网科技新闻 广西泛欧互联网科技有限公司 科技互联网专业务虚会材料 恒生科技互联网指数十大成分股 中国主要互联网科技公司 山东亿川互联网科技有限责任公司 百单网互联网科技有限公司怎么样 西安纸贵互联网科技有限公司 团飞科技与伯堂互联网服务平台 世界互联网科技公司市值排名 科技互联网的核心竞争力 国产互联网科技公司 艺电能源互联网科技有限公司招聘 云南互联网科技学费 互联网科技和医药行业 恒生科技互联网指数十大成分股
0