码迷,mamicode.com
首页 > 其他好文 > 详细

Job 资源对象

时间:2020-09-17 18:40:08      阅读:35      评论:0      收藏:0      [点我收藏+]

标签:服务类   时间   busybox   参数   dep   time   添加   完成   识别   

服务类的Pod容器:RC、RS、DS、Deployment.(Pod内运行的服务,要持续运行)
工作类的Pod容器:Job--->执行一次,或者批量执行处理程序,完成之退 出容器。

//举个栗子
kind: Job
apiVersion: batch/v1
metadata:
  name: test-job
spec: 
  template:
    metadata:
      name: test-job
    spec:
      containers:
      - name: hello
        image: busybox
        command: ["echo","hello k8s job!"]
      restartPolicy: Never

[root@docker-k8s01 ~]# kubectl apply -f test-job.yaml 
[root@docker-k8s01 ~]# kubectl logs test-job-hsl9z 
hello k8s job!

注:注意,如果容器内执行任务有误,会根据容器的重启策略操作容器, 不过这里的容器重启策略只能是: Never和 OnFailure。

提高Job的执行效率
我们可以在Job.spec字段下加上parallelism选项。表示同时运行多少个 Pod执行任务。
我们可以在Job.spec字段下加上completions选项。表示总共需要完成 Pod的数量。

将上述Job任务进行更改。提示,更改Job任务的时候,需要先将原来的Job资源对象删除。

kind: Job
apiVersion: batch/v1
metadata:
  name: test-job
spec:
  parallelism: 2
  completions: 8
  template:
    metadata:
      name: test-job
    spec:
      containers:
      - name: hello
        image: busybox
        command: ["echo","hello k8s job!"]
      restartPolicy: Never

如何定时执行Job

kind: CronJob
apiVersion: batch/v1beta1
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *"              # 添加此行,和crontab -e 里面的分时日月周一样
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            command: ["echo","hello cronjob!"]
          restartPolicy: OnFailure
#此时查看Pod的状态,会发现,每分钟都会运行一个新的Pod来执行命令规 定的任务。
#但是如果是规定具体时间,他可能并不会去执行任务!!!

添加apiVersion库

[root@docker-k8s01 ~]# vim /etc/kubernetes/manifests/kube-apiserver.yaml 
#在command字段下添加- --runtime-config=batch/v2alpha1=true
  - command:
    - kube-apiserver
    - --advertise-address=192.168.171.151
    - --runtime-config=batch/v2alpha1=true
    - --allow-privileged=true
#重启kubelet服务,重新识别api文件内容使之生效
[root@docker-k8s01 ~]# systemctl restart kubelet
//查看api版本库
[root@docker-k8s01 ~]# kubectl api-versions 
.................
batch/v2alpha1

注意:此时仍然不能正常运行指定时间的cronJob,这是因为K8s官方 在cronjob这个资源对象的支持中还没有完善此功能,还待开发。
跟Job资源一样在cronjob.spec.jobTemplate.spec下同样支持并发Job参数:parallelism,也支持完成Pod的总数参数:completions

Job 资源对象

标签:服务类   时间   busybox   参数   dep   time   添加   完成   识别   

原文地址:https://blog.51cto.com/14227204/2530105

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!