前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Job 资源对象

Job 资源对象

作者头像
小手冰凉
发布2020-09-10 18:41:20
5260
发布2020-09-10 18:41:20
举报
文章被收录于专栏:小手冰凉小手冰凉

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

代码语言:javascript
复制
//举个栗子
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资源对象删除。

代码语言:javascript
复制
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

代码语言:javascript
复制
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库

代码语言:javascript
复制
[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
代码语言:javascript
复制
//查看api版本库
[root@docker-k8s01 ~]# kubectl api-versions 
.................
batch/v2alpha1

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档