首页 > 其他分享 >D23 kubernetes 工作负载资源对象-Job与CronJob

D23 kubernetes 工作负载资源对象-Job与CronJob

时间:2024-09-24 16:12:53浏览次数:7  
标签:kubectl CronJob k8s kubernetes D23 job master pi root

1、简介

	Deployment和DaemonSet资源主要用于部署和管理守护进程型的应用程序,如nginx、mysql、java进程等。这类应用程序的特点是持续运行,通常在没有明确停止或下线的情况下一直保持运行状态。此外,kubernetes还提供了Job和CronJob资源,用于管理一次性任务和定时任务,如计算任务、数据备份、数据转换等,这类应用程序通常在需要时运行,并在完成后自动结束

2、Job

  • 假设有一项计算圆周率值的任务,我们可以使用job来完成这项任务。以下是job资源的配置示例
[root@k8s-master k8s]# cat job-pi.yaml
apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  template:
    spec:
      containers:
      - name: pi
        image: uhub.service.ucloud.cn/librarys/perl:latest
        command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Neve
在上述实例中,该job定义了一个perl容器。容器启动后,执行命令 perl -Mgignum......来计算圆周率的值(3.1415926........)。将重启策略restaPolicy字段设置为never,表示当容器终止后不会自动重启容器
  • 创建job资源
[root@k8s-master k8s]# kubectl apply -f job-pi.yaml
  • 查看job对象
[root@k8s-master k8s]# kubectl apply -f job-pi.yaml
NAME   COMPLETIONS   DURATION   AGE
pi     0/1           36s        36s
  • 查看pod
[root@k8s-master k8s]# kubectl get pods
NAME           READY   STATUS              RESTARTS      AGE
pi-gv6c7       0/1     ContainerCreating   0             2s
可以看到pod的status是创建中
[root@k8s-master k8s]# kubectl get pods
NAME           READY   STATUS    RESTARTS      AGE
pi-gv6c7       1/1     Running   0             4s
可以看到pod的status是running中,说明容器在执行任务重。等待约1min,任务执行完成状态转为Completed。
[root@k8s-master k8s]# kubectl get jobs
NAME   COMPLETIONS   DURATION   AGE
pi     0/1           8s         8s
COMPLETIONS: 0/1 表示该 Job 的一个任务还没有完成。
[root@k8s-master k8s]# kubectl get jobs
NAME   COMPLETIONS   DURATION   AGE
pi     1/1           8s         10s
COMPLETIONS: 1/1 表示该 Job 的任务已经完成(Job 只需要完成 1 个任务)。
[root@k8s-master k8s]# kubectl get pods
NAME           READY   STATUS      RESTARTS      AGE
pi-gv6c7       0/1     Completed   0             15s
READY: 0/1 表示 Pod 中的容器已经停止运行,任务完成。
STATUS: Completed 表示 Pod 已经成功完成了它的工作,这意味着 Pod 中的任务已经结束,不再需要保持运行。
[root@k8s-master k8s]# kubectl logs pi-gv6c7
3.141592653.......
通过查看pod日志获取计算结果
如果pod启动失败,job会不断的创建新的pod,直到重试次数到达上限,重试次数由backoffLimit字段设置,默认值为6,既最多重试创建6个pod,每次创建建哥时间呈指数级增加(10s、20s、40s。。。。),其最长延迟为5min
任务完成后,job对象和生成的pod不会自动删除,需要手动删除对应的job对象
[root@k8s-master ~]# kubectl delete job pi
job.batch "pi" deleted
[root@k8s-master ~]# kubectl get pods
NAME           READY   STATUS      RESTARTS      AGE
pi-gv6c7       0/1     Completed   0             24h
pod-pretstop   1/1     Running     9 (69m ago)   18d
[root@k8s-master ~]# kubectl delete pod pi-gv6c7
pod "pi-gv6c7" deleted

3、Cronjob

  • 假设有一项定期执行数据备份的任务,可以使用Cronjob来完成这项任务。以下是Cronjob资源的配置示例
[root@k8s-master k8s]# cat cronjob-mysql-backup.yaml
apiVersion: batch/v1
kind: Cronjob
metadata:
  name: mysql-bakcup
spec:
  schedule: "0 1 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
            image: mysql:5.7
            command:
            - /bin/sh
            - -c
            - mysqldump -h IP地址或主机名 -u username -p password database > /opt/database_$(date +\%Y\%m\%d).sql
          restartPolicy: OnFailure
- 字段含义如下
schedule:设置调度时间的表达式,语法格式与linux系统上的Crontab相同,cron表达式:* * * * * 分 时 日 月 周。这里值为 0 1 * * *表示每天凌晨1点执行
jobTemplate:定义执行的任务模版,其中包含一个mysql容器。容器启动后,执行MySQLdump命令,将远程MySQL数据库导出为sql文件
restartPolicy:重启策略,这里将其设置为onfailure,表示当容器异常退出时(退出状态码为非0)自动重启容器
  • 创建Cronjob资源
[root@k8s-master k8s]# kubectl apply -f cronjob-mysql-backup.yaml
cronjob.batch/mysql-bakcup created
  • 查看Cronjob
[root@k8s-master k8s]# kubectl get cronjob
NAME           SCHEDULE    SUSPEND   ACTIVE   LAST SCHEDULE   AGE
mysql-bakcup   0 1 * * *   False     0        <none>          32s
NAME:名称
SCHEDULE:调度时间
SUSPEND:是否挂起
ACTIVE:当前活跃的任务数
LAST SCHEDULE:最近一次调度时间
AGE:创建时间
	Cronjob是基于job实现的,它是通过定期创建一个新的job对象来执行一次任务。默认情况下,只保留最近成功完成的3个job对象,我们可以通过sucessfullJobHistoryLimit字段来设置保留成功的job数量
	如果间隔时间较多,则可能会出现两个job同时存在的情况,既上一个job还没有执行完成,下一个pod已启动。Cronjob允许这种情况发生,该行为由concurrencyPolicy字段控制,并具有以下可选值:
  • Allow:默认值,允许多并发执行多个相同的job
  • Forbid:禁止并发相同的job。如果上一个job没有执行完成,则跳过下一个job
  • Replace:如果上一个job没有执行完成,则新的job会替换正在运行的job
    如果不需要再定期执行这个任务,只需要删除对应的Cronjob对象即可
[root@k8s-master k8s]# kubectl delete cronjob mysql-bakcup
cronjob.batch "mysql-bakcup" deleted

标签:kubectl,CronJob,k8s,kubernetes,D23,job,master,pi,root
From: https://www.cnblogs.com/suyj/p/18422666

相关文章

  • Centos7.9部署kubernetes(一主两从)(版本1.17.4)
    部署kubernetes1、环境准备IP系统配置角色192.168.8.180centos7.92H4Gmaster192.168.8.181centos7.92H4Gnode1192.168.8.178centos7.92H4Gnode22、在所有节点上关闭swap分区masternode#临时关闭swap分区swapoff-asysctl-wvm.s......
  • 【Kubernetes基础】Helm工具入门与使用
    前言Helm是Kubernetes包管理工具,类似CentOS的yum包管理工具学习Kubernetes,了解如何通过Helm安装跟管理Kubernetes应用很有必要,下面就来介绍Helm的入门使用。一、Helm基本管理1.1检查Helm版本helmversionhelmversion二、配置Helm仓库Helm可以通过添加仓库源来使......
  • Kubernetes最新版本部署完整过程(1.31)
    参考官方文档进行部署:Kubernetes一、环境准备本次实验使用的操作系统为:Centosstream91.1节点规划一台兼容的Linux主机。Kubernetes项目为基于Debian和RedHat的Linux发行版以及一些不提供包管理器的发行版提供通用的指令。每台机器2GB或更多的RAM(......
  • 探索 Kubernetes 服务网格:Istio 实战指南
    ......
  • kubernetes集群公共服务 DNS
    1.我们先按照之前的方式新增加一个虚拟机。一、软件安装#yum-yinstallbind二、软件配置2.1主配置文件修改#vim/etc/named.conf#cat-n/etc/named.conf1//2//named.conf3//4//ProvidedbyRedHatbindpackagetoconfiguretheISCB......
  • Kubernetes-1. 介绍和安装
    1.Kubernetes介绍下载网址:https://github.com/kubernetes/kubernetes/releases1.1Kubernetes的概述容器编排技术:容器编排系统可以对多个docker主机进行统一的管理和调度,协调容器化应用程序的部署、伸缩、发现和管理。主要的容器编排系统如下DockerSwarm:Docker官方提供......
  • Kubernetes集群部署(kubernetes)
    三台主机恢复到docker快照状态;检查驱动器类型为sytemd;设置各个节点的主机名;然后同步会话,修改hosts文件;在k8s运行过程中不建议使用交换分区;关闭交换分区;但是这种方法是临时性的;如何设置永久不启用交换分区;交换分区也是以挂载的方式加入到系统中的;注释掉......
  • 【Kubernetes】常见面试题汇总(二十四)
    目录 71.假设一家公司想要修改它的部署方法,并希望建立一个更具可扩展性和响应性的平台。您如何看待这家公司能够实现这一目标以满足客户需求?72.考虑一家拥有非常分散的系统的跨国公司,期待解决整体代码库问题。您认为公司如何解决他们的问题?特别说明:题目69-113属于【Kube......
  • 【Kubernetes】常见面试题汇总(二十九)
    目录 81.简述你知道的几种CNI网络插件,并详述其工作原理。K8s常用的CNI网络插件(calico&&flannel),简述一下它们的工作原理和区别。特别说明:题目  1-68  属于【Kubernetes】的常规概念题,即“汇总(一)~(二十二)”。题目69-113属于【Kubernetes】的生产应用题。8......
  • 【Kubernetes】常见面试题汇总(二十三)
    目录 69.考虑一家拥有分布式系统的跨国公司,拥有大量数据中心,虚拟机和许多从事各种任务的员工。您认为这样公司如何以与Kubernetes一致的方式管理所有任务?70.考虑一种情况,即公司希望通过维持最低成本来提高其效率和技术运营速度。您认为公司将如何实现这一目标?特别说明:题......