k8s部署xxl-job分布式任务调度服务

news2024/11/25 1:08:23

一、背景

  • 什么时候需要把xxl-job部署到k8s里
    当你的java服务部署到K8S后,因为xxl-job的任务调度器需要对注册上来的执行器进行健康检测,而java服务作为执行器,注册地址是pod的Ip地址;所以,调度器想要访问执行器的网路是不通的。
    换句话说,xxl-job的任务调度器和执行器必须在同一个网络下,互相之间能够相通的。

》也就不能把执行器部署在k8s里,而把任务调度器部署在k8s外部。

本文主要详细讲解其部署过程,分为以下主要步骤:

  • 基于xxl-job的源码,制作你自己的docker镜像,并推送到私有仓库
  • 使用argocd部署,采用Helm的方式

详细的部署可以参考之前的devops系列文章,这里不会像之前那样赘述。

二、目标

  • 1、xxl-job可以部署多个Pod节点,也就是支持集群模式,对外提供的是service地址,可以是NodePort或者LB。
  • 2、替代官方推荐的集群模式,不再需要Nginx等组件代理多个xxl-job任务调度器。
  • 3、k8s内部的java服务使用同网络下的xxl-job,能够正常地执行任务调度。

三、准备工作

  • 1、拉取github源码,修改必要的文案和图标等
  • 2、编写Dockerfile
  • 3、在jenkins创建job
  • 4、编写argocd-helm-yaml
  • 5、在argocd创建Application
  • 6、创建xxl-job数据库,执行脚本语句

1、拉取xxl-job源码

修改xxl-job-admin模块下的pom.xml,增加maven插件:
为的是读取程序的版本号,在下文制作docker镜像的时候用上。

<plugin>
				<groupId>pl.project13.maven</groupId>
				<artifactId>git-commit-id-plugin</artifactId>
				<version>4.0.0</version>
				<executions>
					<execution>
						<goals>
							<goal>revision</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<verbose>true</verbose>
					<dateFormat>yyyy-MM-dd'T'HH:mm:ssZ</dateFormat>
					<generateGitPropertiesFile>true</generateGitPropertiesFile>
					<generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>
					<includeOnlyProperties>
						<includeOnlyProperty>^git.build.(time|version)$</includeOnlyProperty>
						<includeOnlyProperty>^git.commit.id.(abbrev|full)$</includeOnlyProperty>
					</includeOnlyProperties>
					<commitIdGenerationMode>full</commitIdGenerationMode>
					<failOnNoGitDirectory>false</failOnNoGitDirectory>
				</configuration>
			</plugin>

修改文案及图标,在xxl-job-admin/resources/templates目录下的.ftl文件。

其他的更多二次开发,有空我们在另外的文章单独讨论。

  • 支持Ldap统一身份登录
  • 注册到consul/nacos等服务注册中心
  • 本地配置调整为分布式配置,如nacos/consul等
  • 接入sentry报警
  • 接入micrometer,暴露prometheus能够采集的指标接口
  • 丰富其原本的告警机制,支持钉钉、企业微信、短信等方式
  • 任务执行的时候,采用okhttp等http框架替代现今方式
  • 日志治理

2、编写Dockerfile

我们是在Jenkins里的构建docker镜像里使用到它,所以会放这个文件在jenkins机器上。好处是不用每个要部署到K8S里的服务都关心这个问题。

由于前文,我们已有详细介绍,这里就一笔带过了。

3、在jenkins创建Job

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4、编写argocd-helm-yaml

在这里插入图片描述

  • 从之前的devops-service目录复制一份到xx-job
  • 修改values.yaml
appName: xx-job

# endpoint
service:
  type: NodePort
  port: 8090

说白了,xx-job也是一个java应用,和devops-service最大不同,就是服务名称和端口。

5、在argocd创建Application

在这里插入图片描述

6、创建xxl-job数据库,执行脚本语句

官方的doc目录下有.sql文件,需要注意的时候及时删除log表的数据,防止过大。

四、验证

  • 查看xxl-job对外提供的端口
    在这里插入图片描述

  • 查看xxl-job的pod是否启动成功
    在这里插入图片描述

  • 访问xxl-job的健康检测接口,返回{“status”:“UP”}

  • 进入xxl-job-admin控制台,可以看到devops-service,作为执行器已自动注册到调度中心了。devops-service服务的pod地址是10.45.0.6。
    在这里插入图片描述

  • 创建xxl-job的任务
    在这里插入图片描述

  • 查看任务的调度日志
    在这里插入图片描述
    至此,本文对于K8S部署xxl-job就已结束。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/824677.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自动化测试的生命周期是什么? qt

&#xfeff;Java版知识付费源码 Spring CloudSpring BootMybatisuniapp前后端分离实现知识付费平台 提供职业教育、企业培训、知识付费系统搭建服务。系统功能包含&#xff1a;录播课、直播课、题库、营销、公司组织架构、员工入职培训等。 提供私有化部署&#xff0c;免费售…

台式机/工控机通过网线共享笔记本电脑无线网络linux系统下 usb网卡的驱动安装

一、台式机/工控机通过网线共享笔记本电脑无线网络 1、 将台式机通过网线和笔记本连接。 2、 将笔记本的“本地连接”和“无线网络连接”的ipv4均设置为自动获取。 4.修改台式机的IP地址为如下&#xff08;对应笔记本信息&#xff09; IP地址为192.168.XXX.12 子网掩码为255.2…

JavaSE【继承、初始化、pretected封装、组合】

一、继承 继承 (inheritance) 机制 &#xff1a;是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特 性 的基础上进行扩展&#xff0c;增加新功能 &#xff0c;这样产生新的类&#xff0c;称 派生类 。 继承呈现了面向对象程序设计的层次结…

MP4如何转MP3?教你简单好用的转换方法

怎么将MP4格式的视频转换成MP3音频呢&#xff1f;相信大家在看短视频的时候&#xff0c;有的视频背景音乐非常好听&#xff0c;我们又搜不到这个音频的源声在哪里&#xff0c;这时候我们就可以将这段视频直接转换成MP3格式音频&#xff0c;用来当做铃声或者是闹钟非常合适&…

Python web实战之 Django 的 MVC 设计模式详解

技术栈&#xff1a;Python、Django、HTML、CSS、JavaScript。 概要 在 Web 开发中&#xff0c;MVC&#xff08;Model-View-Controller&#xff09;模式是一种非常常见的设计模式&#xff0c;它可以帮助我们更好地管理代码&#xff0c;提高代码的可维护性。今天就介绍如何使用 …

量子力学的应用:量子通信和量子感应

亲爱的读者&#xff0c; 欢迎回到我们的量子力学系列文章。在前面的几篇文章中&#xff0c;我们已经深入探讨了量子力学的起源、基本概念、实验验证以及解释问题&#xff0c;以及量子计算的应用。今天&#xff0c;我们将继续探讨量子力学的另外两个引人注目的应用领域&#xf…

ubuntu git操作记录设置ssh key

用到的命令&#xff1a; 安装git sudo apt-get install git配置git用户和邮箱 git config --global user.name “用户名” git config --global user.email “邮箱地址”安装ssh sudo apt-get install ssh然后查看安装状态&#xff1a; ps -e | grep sshd4. 查看有无ssh k…

最新补丁让OpenBSD终于能够进行AMD CPU微码更新

导读最新的 OpenBSD”current”代码终于开始支持 AMD CPU 微代码更新。 通过本周末合并到 OpenBSD 中的一组补丁&#xff0c;现在用户可以更新 AMD 处理器的 CPU 微代码了。 ports/sysutils/firmware/amd 也被添加进来&#xff0c;用于推送所有的 AMD CPU 微代码二进制文件。 …

基于照片对天线进行全波分析(详细分解步骤)

诸如NFC、RFID和物联网系统传感器等无线应用均受益于印刷在塑料基板上的低成本天线。然而&#xff0c;当天线集成到系统中时&#xff0c;数据手册的指标与天线的实际行为及其与相邻结构的相互作用之间通常存在不匹配现象。在这种情况下&#xff0c;就需要执行更高级的分析&…

【严重】Smartbi商业智能BI软件权限绕过漏洞

漏洞描述 Smartbi是一款商业智能应用&#xff0c;提供了数据集成、分析、可视化等功能&#xff0c;帮助用户理解和使用他们的数据进行决策。 在Smartbi受影响版本中存在权限绕过问题&#xff0c;未授权的攻击者可以通过 RMI 的方式调用 getPassword 接口获取管理员token信息。…

高忆管理:创业板中签第一天卖吗?

跟着科技进步和改革开放的深入发展&#xff0c;我国的股票商场继续火热。随之而来的是越来越多的新股发行。关于股民们来说&#xff0c;怎么抢到新股成为了一个热点话题。在最近的一次创业板新股发行中&#xff0c;中签率再创新高&#xff0c;让不少股民欣喜不已。但是&#xf…

二、JVM-深入运行时数据区

深入运行时数据区 计算机体系结构 JVM的设计实际上遵循了遵循冯诺依曼计算机结构 CPU与内存交互图&#xff1a; 硬件一致性协议&#xff1a; MSI、MESI、MOSI、Synapse、Firely、DragonProtocol 摩尔定律 摩尔定律是由英特尔(Intel)创始人之一戈登摩尔(Gordon Moore)提出来…

输入框长度在XSS测试中如何绕过字符长度限制

大家好&#xff0c;这是我编写的第一篇文章&#xff0c;之所以会分享这个故事&#xff0c;是因为我花了几个晚上的时间&#xff0c;终于找到了解决某个问题的方法。故事如下&#xff1a; 几个月前&#xff0c;我被邀请参加一个非公共的漏洞悬赏项目&#xff0c;在初期发现了一些…

汽车行业案例 | 联合汽车电子全新质量问题管理平台上线,燕千云助力汽车电子领军者实现数字化质量管理

据权威调研机构显示&#xff0c;2022年中国智能电动汽车的销量已占新能源汽车的52%以上。到2025年&#xff0c;在新能源汽车50%的汽车出行市场渗透率的基础上&#xff0c;智能电动汽车的销量将超1220万辆&#xff0c;占新能源汽车的80.1%。在技术进步和产业变革快速推进的背景下…

curl命令详解及设置代理服务器

目录 概述 Linux Curl命令详解 Curl命令参数 Curl模仿浏览器命令 Curl模仿浏览器详解 模仿浏览器 Curl伪造refer命令 Curl伪造refer详解 伪造refer Curl下载文件或网页详解 Curl下载进度条命令 Curl下载进度条详解 Curl断点续传命令 Curl断点续传详解 断点续传 …

Kubernetes客户端认证—— 基于CA证书的双向认证方式

1、Kubernetes 认证方式 Kubernetes集群的访问权限控制由API Server负责&#xff0c;API Server的访问权限控制由身份验证(Authentication)、授权(Authorization)和准入控制&#xff08;Admission control&#xff09;三个步骤组成&#xff0c;这个三个步骤是按序进行的&#x…

Docker 安装 MySQL5.6

方法一、docker pull mysql 查找Docker Hub上的mysql镜像 #docker search mysql 这里我们拉取官方的镜像,标签为5.6 #docker pull mysql:5.6 &#xff08;第一次启动Docker-MySql主要是查看Docker里面MySQL的默认配置&#xff0c;数据位置&#xff0c;日志位置&#xff0c;配…

Flink非对齐checkpoint原理(Flink Unaligned Checkpoint)

Flink非对齐checkpoint原理&#xff08;Flink Unaligned Checkpoint&#xff09; 为什么提出Unaligned Checkpoint&#xff08;UC&#xff09;&#xff1f; 因为反压严重时会导致Checkpoint失败&#xff0c;可能导致如下问题 恢复时间长-服务效率低非幂等和非事务会导致数据…

企业电子招投标采购系统源码之电子招投标的组成 tbms

&#xfeff;功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&…

当我们在谈Web3时,其实谈的是什么?

当我们在谈Web3时&#xff0c;其实谈的是什么&#xff1f;虽然这个问题看似简单&#xff0c;但是Web3的定义却十分复杂。在这篇文章中&#xff0c;我们将尝试用简单易懂的语言来解答这个问题&#xff0c;并深入探讨Web3对未来的影响。 首先&#xff0c;Web3是什么&#xff1f;简…