容器化部署(k8s)任务调度平台xxl-job(部署过程及踩坑问题记录)

news2025/3/2 2:01:16

文章预览:

    • 1 部署过程(下方ip代表服务器的ip哈)
      • 1.1 制作服务打包镜像DockerFile
      • 1.2 制作执行脚本run.sh
      • 1.3 jar包上上传
      • 1.4 kuboard创建----配置信息
    • 2 踩坑问题记录
      • 2.1 日志抛出异常
      • 2.2 原因分析
      • 2.3 过程分析及解决
      • 2.4 执行调度测试

导入sql等过程就不一一讲述了,详情可见官网,只针对与部署过程及问题记录。

  • xxl-job官方地址:https://www.xuxueli.com/xxl-job/

1 部署过程(下方ip代表服务器的ip哈)

1.1 制作服务打包镜像DockerFile

#版本信息
#java:latest 为centos官方java运行环境镜像,600M ,可以提前pull到主机本地
FROM ip:port/library/openjdk:8
MAINTAINER cds "test@qq.com"

#实际上可以配置成变量 
ADD xxljob-service.jar /usr/local/jar/

#开启内部服务端口 xxljob-demo 项目端口
            
#ENV TIME=`date`
CMD java -jar -Duser.timezone=GMT+08 /usr/local/jar/xxljob-service.jar --spring.config.location=/usr/local/jar/config

1.2 制作执行脚本run.sh

#!/bin/bash

#服务名称
SERVER_NAME=xxljob-service
DOCKER_IMAGES=`docker images --filter=reference=${SERVER_NAME}'*'|grep -v grep | awk '{print $3}'`

#删除镜像
docker rmi -f ${DOCKER_IMAGES}
TIME=`date "+%Y%m%d%H%M"`
IMAGE_NAME=xxljob-service:${TIME}
docker build -t ${IMAGE_NAME} .
echo ${IMAGE_NAME} > './image_name'

#harbor项目地址
HARBOR_ADDRESS=ip:port/xxljob/

#项目地址
SERVER_ADDRESS="${HARBOR_ADDRESS}${IMAGE_NAME}"

#新镜像打标签
docker tag ${IMAGE_NAME} ${SERVER_ADDRESS}

#上传到harbor
docker push ${SERVER_ADDRESS}

1.3 jar包上上传

使用ftp上传服务jar包,执行 sh run.sh,生成镜像版本

1.4 kuboard创建----配置信息

在这里插入图片描述

在这里插入图片描述

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

后期修改jar包版本的话,重新上传jar包,执行 sh run.sh生成新的镜像版本号即可,去Kuboard点击调整镜像版本即可。
在这里插入图片描述

2 踩坑问题记录

2.1 日志抛出异常

按照正常的容器部署之后,我们会发现真正去执行调度的时候它会报以下异常:
在这里插入图片描述

2.2 原因分析

原因:大概率是由于你的容器内部端口不通导致,很可能初始创建服务的时候只映射了服务端口,然后去执行调度或查看日志的时候回调xxl-job注册地址端口拒绝连接。

2.3 过程分析及解决

首先,我们看一下服务端执行配置文件,只有一个服务端口,没有什么大问题,这个不用过多解释,给大家贴上地址有兴趣可以慢慢去看一下(只贴了部分相关代码哈)

  • xxl-job官方地址:https://www.xuxueli.com/xxl-job/
server:
  port: 7000
spring:
  application:
    name: xxl-job-admin

  ### xxl-job, email
  mail:
    # 设置邮箱主机
    host: smtp.qq.com
    port: 465
    # 设置用户名
    username: 496875002@qq.com
    from: ${spring.mail.username}
    # 你的授权码(126163 以及 qq 邮箱 都需要授权码登录,没有授权码的直接登录网页版邮箱设置里设置)
    # 设置密码,该处的密码是QQ邮箱开启SMTP的授权码而非QQ密码
    password: jbfdcozgimsubibb
    properties:
      mail:
        smtp:
          # 设置是否需要认证,如果为true,那么用户名和密码就必须的,
          # 如果设置false,可以不设置用户名和密码,当然也得看你的对接的平台是否支持无密码进行访问的。
          auth: true
          starttls:
            # STARTTLS[1]  是对纯文本通信协议的扩展。它提供一种方式将纯文本连接升级为加密连接(TLSSSL),而不是另外使用一个端口作加密通信。
            enable: true
            required: true
          socketFactory:
            class: javax.net.ssl.SSLSocketFactory
          # QQ邮箱必须加此注解
          ssl:
            enable: true

### xxl-job, access token
xxl:
  job:
    accessToken:
    ### xxl-job, i18n (default is zh_CN, and you can choose "zh_CN", "zh_TC" and "en")
    i18n: zh_CN
    ## xxl-job, triggerpool max size
    triggerpool:
      fast:
        max: 200
      slow:
        max: 100
    ### xxl-job, log retention days
    logretentiondays: 30
    logpath: /data/applogs/xxljob/jobhandler

重点看一下客户端配置文件核心配置(只贴了核心部分哈)

server:
  port: 9095

xxl:
  job:
    admin:
      # 这里xjadmin是走的网关(可以忽略我的换成自己的配置)  如果没有网关的话,
      # 直接http://ip:xxljob服务端口/xxljob服务端名称  上面展示的服务端口是7000,下面就用7000哈
      addresses: http://ip:7000/xjadmin  
    # xxl-job, access token
    accessToken:
    executor:
      # xxl-job executor appname
      # 启动之后查看任务调度中心页面 --》执行器管理 --》查看是否存在xxl-job-executor-sat-client执行器,如果不存在手动添加 --》 appname与xxl-job-executor-sat-client相同,注册方式为手动注入,添加机器地址 --》添加成功保存后,查看是否存在 --》可以进行再次编辑,保存后查看onLine地址是否有值,确认端口是否正确
      appname: processManage
      # xxl-job executor registry-address: default use address to registry , otherwise use ip:port if address is nullhttp://192.168.1.75:9528/
      address: http://ip:9995/
      # xxl-job executor server-info
      ip: ip
#       注册client端口,手动及自动创建端口都为此port
      port: 9995
      # xxl-job executor log-path
      logpath: logs/applogs/xxl-job/jobhandler
      #logpath: E://logs/applogs/xxl-job/jobhandler
      # xxl-job executor log-retention-days
      logretentiondays: 30

发现,客户端不仅仅是服务端口,还会有一个注册端口,看到这里,想必大家明白了,既然有两个端口,那么我们启动容器时是不是只映射了一个服务端口,当我们去真正调度的时候,会回调到注册端口,这个端口在容器内,是没有办法直接去映射到另一个容器的,所以你是不是忘了客户端的注册端口映射了,所以启动xxl-job客户端需要映射两个端口,可以直接去kuboard去添加一个端口(或者docker run -d -p 9095:9095 -p 9995:9995 ......),如下图:
在这里插入图片描述

2.4 执行调度测试

发现执行成功,查看日志也正常。
在这里插入图片描述
在这里插入图片描述

到此,问题就解决了。只针对于容器端口不通问题导致的,可能不够细心导致,就当重温一遍学习记录一下,希望大家多多指正!!!

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

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

相关文章

Baklib|SaaS产品,实现企业流程数字化

正如许多科技潮流一样,“SaaS”这个词也逐渐成为企业经理们谈论的话题。然而,如果您对“SaaS”一无所知,您可能会感到困惑并容易忽略它。那么,什么是“SaaS”?它的优点是什么?它如何帮助企业实现数字化转型…

SSM+VUE+ElementUI实现宠物领养系统,期末大作业

SSMVUEElementUI实现宠物领养系统 系统角色 领养人,管理员 系统功能 本系统的功能主要分为四大模块: 领养人用户模块:注册、领养人登录、申请领养、查看小动物信息、发布留言领养机构员工用户模块:领养机构员工登录、增加小动…

地平线开发者社区真心话大冒险,邀你闯关!

Hello! 各位初次见面的萌新和久经沙场的社牛 目前开发者社区已成立两年有余 感谢大家一路上的支持和理解 今天,我们也准备了一些小礼品 希望倾听大家作为用户和开发者的真心话 同时,也欢迎初次见面的萌新们一同冒险 期待陪伴大家走过更…

Protect Privacy from Gradient Leakage Attack in Federated Learning

wangjunxiao/GradDefense: Defense against Gradient Leakage Attack (github.com) Summary 针对DGA和DIA攻击,提出了一个轻量、保证训练准确性、够用的的防御机制。防御机制主要包括随机layer添加扰动,然后进行梯度补偿来减少噪声对模型准确性的影响。…

CORS处理跨域问题

“前后端分离的项目必然会遇到一个典型的问题——跨域问题。” 跨域 要解决跨域问题,首先得知道什么是跨域? 首先,跨域是访问的域名或IP、端口三者有一不同都属于跨域。(注意请求路径不是),即使在本地测试&…

【计算机网络】学习笔记--第一章

【计算机网络】学习笔记--第一章基本概念端系统之间的通信客户-服务器方式(C/S方式)对等连接方式:三种交换方式电路交换(Circuit Switching)分组交换(Packet Switching)报文交换(Mes…

centos7 安装与卸载 Mysql 5.7.27(详细完整教程)

目录 卸载 安装 卸载 1、关闭MySQL服务 systemctl stop mysqld2、使用 rpm 命令查看已安装的安装包 [nameVM-20-12-centos mysql1]$ rpm -qa|grep mysql 3、使用yum卸载安装的mysql [nameVM-20-12-centos mysql1]$ sudo yum remove mysql mysql-server mysql-libs mysql…

【LeetCode每日一题:775.全局倒置与局部倒置~~~维护前缀最大值】

题目描述 给你一个长度为 n 的整数数组 nums &#xff0c;表示由范围 [0, n - 1] 内所有整数组成的一个排列。 全局倒置 的数目等于满足下述条件不同下标对 (i, j) 的数目&#xff1a; 0 < i < j < n nums[i] > nums[j] 局部倒置 的数目等于满足下述条件的下标 …

Air780E连接点灯科技-LuatOS

前面发了腾讯云点灯以后&#xff0c;有朋友提到了点灯科技&#xff0c;人家都叫点灯科技了&#xff0c;那咱们学点灯必须连一下试试呀。本文将记录如何将设备连接点灯云平台&#xff0c;并通过手机进行远程控制 先上成果演示 一、点灯云准备 下载点灯科技的app-blinker&#…

Offsets 获取该行的起始索引 start=offsets (x)

获取数据列的第 x 行&#xff0c;通过 Offsets 获取该行的起始索引 startoffsets (x) 和下一行的起始索引 endoffsets (x1)&#xff0c;然后使用这两个索引通过 Bytes 获取具体数据对应的字节流 bytes.slice (start,end)&#xff0c;最后按照字段类型做相应的转换即可。 注&am…

QGC二次开发基础

文章目录 前言一、添加文件到QGC工程二、添加界面三、QML和C++交互四、信号与槽五、测试前言 QGC 4.2.4 一、添加文件到QGC工程 在qgroundcontrol/src目录下创建SimpleTest文件夹 在文件夹中创建SimpleTest.cpp、SimpleTest.h和SimpleTest.qml三个文件 在qgroundcontrol.p…

锁竞争导致的慢sql分析

线上在同步用户时&#xff0c;经常出现简单sql的慢日志。根据方法找到代码&#xff0c;发现方法内使用redisson进行锁操作&#xff0c;waiTime和leaseTime都为3秒,数据库操作比较简单&#xff0c;只是一个简单的用户更新操作。代码简化后如下 Override Transactional(rollback…

客流分析统计摄像头可定制算法程序自动判断识别提醒

客流分析统计摄像头是一个专门为商业零售业企业开发的智能客流量统计分析系统。客流统计分析系统能实时、动态、准确、连续地记录着经营场地的客流的数据信息&#xff0c;既有当前客流又有历史客流&#xff0c;既有不同时段的&#xff0c;又有不同区域客流数据。 客流分析统计摄…

【论文】Poly-yolo: 改进anchor分配问题

文章目录Poly-yolo: higher speed,more precise detection and instance segmentation for yolov31 修改了骨干网络增加CE模块2 重写标签3、修改了输出层3.1 修改细节3.2 修改目的&#xff1a;改进anchor分配问题4 检测多边形 Instance segmentation with Poly-YOLO4.1 The pri…

【Pytorch with fastai】第 9 章 :表格建模深入探讨

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

95后工程师上班哼小曲?那些愉快上班的打工人,到底怎么做到的?

特别羡慕我们公司一个画PCB板子的刘工&#xff0c;95后&#xff0c;来公司也3年多了&#xff0c;他不是我们部门赚得最多的&#xff0c;也不是人际关系处得最好的&#xff0c;却是活得最开心的。 具体表现在哪呢&#xff1f; ——他居然能每天哼着小曲上班。 怎么会有人上班…

《Linux下的进程创建》

【一】fork函数初识 在Linux中fork函数是非常重要的&#xff0c;他从已存在的进程中创建一个新进程&#xff0c;进程为子进程&#xff0c;而原进程为父进程。 返回值&#xff1a;fork函数的返回值是非常有意思的&#xff0c;他是有两个返回值的&#xff0c;对于父进程来说&…

QRegExp(正则表达式)

QRegExp 头文件&#xff1a;#include<QRegExp> 构造函数&#xff1a; 常用函数&#xff1a; indexIn()判断是否符合规则matchedLength()返回最后一个匹配字符串的长度&#xff0c;没有的话返回-1setPattern()将模式字符串设置为模式。区分大小写、通配符和最小匹配选项不…

openpnp软件的使用 - 引入坐标文件

文章目录openpnp软件的使用 - 引入坐标文件前言笔记生成符合openpnp要求的坐标文件板子在openpnp设备上摆放的规则确定openpnp设备的x,y方向确定自己板子的原点坐标和xy方向在openpnp设备平台上摆放板子在openpnp中引入坐标文件新建任务新建板子引入板子的坐标文件设置mark点Pa…

Starday影响者视频能给你提升80%的流量?

跨境电商行业随着互联网时代的推进&#xff0c;Starday跨境电商平台受到越来越多的人关注&#xff0c;许多商家受碍于疫情影响&#xff0c;为了个人商家和企业发展&#xff0c;将目光投于海外。如雨后春笋般出现的跨境电商平台&#xff0c;也为商家带来了许多困扰&#xff0c;该…