kubernetes部署xxl-job-admin:2.2.0

  sre

5fdc748ebed464961.jpg_fo742.jpg

mysql.sql

下载项目源码并解压,获取 “调度数据库初始化SQL脚本” 并执行即可。
“调度数据库初始化SQL脚本” 位置为/xxl-job/doc/db/tables_xxl_job.sql:

#
# XXL-JOB v2.2.0
# Copyright (c) 2015-present, xuxueli.

CREATE database if NOT EXISTS `xxl_job` default character set utf8mb4 collate utf8mb4_unicode_ci;
use `xxl_job`;

SET NAMES utf8mb4;

CREATE TABLE `xxl_job_info` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `job_group` int(11) NOT NULL COMMENT '执行器主键ID',
  `job_cron` varchar(128) NOT NULL COMMENT '任务执行CRON',
  `job_desc` varchar(255) NOT NULL,
  `add_time` datetime DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  `author` varchar(64) DEFAULT NULL COMMENT '作者',
  `alarm_email` varchar(255) DEFAULT NULL COMMENT '报警邮件',
  `executor_route_strategy` varchar(50) DEFAULT NULL COMMENT '执行器路由策略',
  `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
  `executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数',
  `executor_block_strategy` varchar(50) DEFAULT NULL COMMENT '阻塞处理策略',
  `executor_timeout` int(11) NOT NULL DEFAULT '0' COMMENT '任务执行超时时间,单位秒',
  `executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失败重试次数',
  `glue_type` varchar(50) NOT NULL COMMENT 'GLUE类型',
  `glue_source` mediumtext COMMENT 'GLUE源代码',
  `glue_remark` varchar(128) DEFAULT NULL COMMENT 'GLUE备注',
  `glue_updatetime` datetime DEFAULT NULL COMMENT 'GLUE更新时间',
  `child_jobid` varchar(255) DEFAULT NULL COMMENT '子任务ID,多个逗号分隔',
  `trigger_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '调度状态:0-停止,1-运行',
  `trigger_last_time` bigint(13) NOT NULL DEFAULT '0' COMMENT '上次调度时间',
  `trigger_next_time` bigint(13) NOT NULL DEFAULT '0' COMMENT '下次调度时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `xxl_job_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `job_group` int(11) NOT NULL COMMENT '执行器主键ID',
  `job_id` int(11) NOT NULL COMMENT '任务,主键ID',
  `executor_address` varchar(255) DEFAULT NULL COMMENT '执行器地址,本次执行的地址',
  `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
  `executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数',
  `executor_sharding_param` varchar(20) DEFAULT NULL COMMENT '执行器任务分片参数,格式如 1/2',
  `executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失败重试次数',
  `trigger_time` datetime DEFAULT NULL COMMENT '调度-时间',
  `trigger_code` int(11) NOT NULL COMMENT '调度-结果',
  `trigger_msg` text COMMENT '调度-日志',
  `handle_time` datetime DEFAULT NULL COMMENT '执行-时间',
  `handle_code` int(11) NOT NULL COMMENT '执行-状态',
  `handle_msg` text COMMENT '执行-日志',
  `alarm_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败',
  PRIMARY KEY (`id`),
  KEY `I_trigger_time` (`trigger_time`),
  KEY `I_handle_code` (`handle_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `xxl_job_log_report` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `trigger_day` datetime DEFAULT NULL COMMENT '调度-时间',
  `running_count` int(11) NOT NULL DEFAULT '0' COMMENT '运行中-日志数量',
  `suc_count` int(11) NOT NULL DEFAULT '0' COMMENT '执行成功-日志数量',
  `fail_count` int(11) NOT NULL DEFAULT '0' COMMENT '执行失败-日志数量',
  PRIMARY KEY (`id`),
  UNIQUE KEY `i_trigger_day` (`trigger_day`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `xxl_job_logglue` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `job_id` int(11) NOT NULL COMMENT '任务,主键ID',
  `glue_type` varchar(50) DEFAULT NULL COMMENT 'GLUE类型',
  `glue_source` mediumtext COMMENT 'GLUE源代码',
  `glue_remark` varchar(128) NOT NULL COMMENT 'GLUE备注',
  `add_time` datetime DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `xxl_job_registry` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `registry_group` varchar(50) NOT NULL,
  `registry_key` varchar(255) NOT NULL,
  `registry_value` varchar(255) NOT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `i_g_k_v` (`registry_group`,`registry_key`,`registry_value`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `xxl_job_group` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `app_name` varchar(64) NOT NULL COMMENT '执行器AppName',
  `title` varchar(12) NOT NULL COMMENT '执行器名称',
  `address_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '执行器地址类型:0=自动注册、1=手动录入',
  `address_list` varchar(512) DEFAULT NULL COMMENT '执行器地址列表,多地址逗号分隔',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `xxl_job_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL COMMENT '账号',
  `password` varchar(50) NOT NULL COMMENT '密码',
  `role` tinyint(4) NOT NULL COMMENT '角色:0-普通用户、1-管理员',
  `permission` varchar(255) DEFAULT NULL COMMENT '权限:执行器ID列表,多个逗号分割',
  PRIMARY KEY (`id`),
  UNIQUE KEY `i_username` (`username`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `xxl_job_lock` (
  `lock_name` varchar(50) NOT NULL COMMENT '锁名称',
  PRIMARY KEY (`lock_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


INSERT INTO `xxl_job_group`(`id`, `app_name`, `title`, `address_type`, `address_list`) VALUES (1, 'xxl-job-executor-sample', '示例执行器', 0, NULL);
INSERT INTO `xxl_job_info`(`id`, `job_group`, `job_cron`, `job_desc`, `add_time`, `update_time`, `author`, `alarm_email`, `executor_route_strategy`, `executor_handler`, `executor_param`, `executor_block_strategy`, `executor_timeout`, `executor_fail_retry_count`, `glue_type`, `glue_source`, `glue_remark`, `glue_updatetime`, `child_jobid`) VALUES (1, 1, '0 0 0 * * ? *', '测试任务1', '2018-11-03 22:21:31', '2018-11-03 22:21:31', 'XXL', '', 'FIRST', 'demoJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2018-11-03 22:21:31', '');
INSERT INTO `xxl_job_user`(`id`, `username`, `password`, `role`, `permission`) VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL);
INSERT INTO `xxl_job_lock` ( `lock_name`) VALUES ( 'schedule_lock');

commit;


xxl-job-admin k8s

img build

mvn build:

git clone -b 2.2.0 https://gitee.com/xuxueli0323/xxl-job.git
cd xxl-job
mvn  compile package -DskipTests -Dmaven.compile.fork=true
cd xxl-job-admin

Dockerfile:

FROM openjdk:8-jre-slim
MAINTAINER me@test.com
ENV DB_PWD="123456"
ENV TZ=PRC
ENV JAVA_OPTS="-server -Xms128m -Xmx4096m"
ENV JMX_OPTS="-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false  -Dcom.sun.management.jmxremote.port=9999"
RUN ln -snf /usr/share/zoneinfo/TZ /etc/localtime && echoTZ > /etc/timezone
ADD target/xxl-job-admin-*.jar /usr/local/app.jar
CMD java JAVA_OPTSJMX_OPTS -Djava.rmi.server.hostname=(hostname -I)  -jar -Dspring.config.location=/usr/local/config/application.properties  /usr/local/app.jar  --spring.datasource.password=DB_PWD --server.port=$JAR_PORT
EXPOSE 8080
EXPOSE 5555
EXPOSE 9999

docker build:

docker build -t hub.your.com/xxl-job-admin:2.2.0 .
docker push hub.your.com/xxl-job-admin:2.2.0

k8s

cm xxl-job-admin

https://gitee.com/xuxueli0323/xxl-job/blob/2.2.0/xxl-job-admin/src/main/resources/application.properties贴到cm里头,去掉密码

apiVersion: v1
kind: ConfigMap
metadata:
  name: xxl-job-admin
  namespace: test
data:
  application.properties: |
        ### web
        server.port=8080
        server.servlet.context-path=/xxl-job-admin

        ### actuator
        management.server.servlet.context-path=/actuator
        management.health.mail.enabled=false

        ### resources
        spring.mvc.servlet.load-on-startup=0
        spring.mvc.static-path-pattern=/static/**
        spring.resources.static-locations=classpath:/static/

        ### freemarker
        spring.freemarker.templateLoaderPath=classpath:/templates/
        spring.freemarker.suffix=.ftl
        spring.freemarker.charset=UTF-8
        spring.freemarker.request-context-attribute=request
        spring.freemarker.settings.number_format=0.##########

        ### mybatis
        mybatis.mapper-locations=classpath:/mybatis-mapper/*Mapper.xml
        #mybatis.type-aliases-package=com.xxl.job.admin.core.model

        ### xxl-job, datasource
        spring.datasource.url=jdbc:mysql://mysql-usercenter-db.bengbu.svc.cluster.local:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
        spring.datasource.username=xxl_job
        #密码用Secret存密文
        #spring.datasource.password=123456
        spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

        ### datasource-pool
        spring.datasource.type=com.zaxxer.hikari.HikariDataSource
        spring.datasource.hikari.minimum-idle=10
        spring.datasource.hikari.maximum-pool-size=30
        spring.datasource.hikari.auto-commit=true
        spring.datasource.hikari.idle-timeout=30000
        spring.datasource.hikari.pool-name=HikariCP
        spring.datasource.hikari.max-lifetime=900000
        spring.datasource.hikari.connection-timeout=10000
        spring.datasource.hikari.connection-test-query=SELECT 1

        ### xxl-job, email
        spring.mail.host=smtp.qq.com
        spring.mail.port=25
        spring.mail.username=xxx@qq.com
        spring.mail.password=xxx
        spring.mail.properties.mail.smtp.auth=true
        spring.mail.properties.mail.smtp.starttls.enable=true
        spring.mail.properties.mail.smtp.starttls.required=true
        spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory

        ### xxl-job, access token
        xxl.job.accessToken=

        ### xxl-job, i18n (default is zh_CN, and you can choose "zh_CN", "zh_TC" and "en")
        xxl.job.i18n=zh_CN

        ## xxl-job, triggerpool max size
        xxl.job.triggerpool.fast.max=200
        xxl.job.triggerpool.slow.max=100

        ### xxl-job, log retention days
        xxl.job.logretentiondays=30

pvc xxl-job-admin

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: xxl-job-admin
  namespace: test
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: "1500Gi"
  volumeName: 
  storageClassName: nfs

Secret xxl-job-admin chnageyoupassword

echo -n chnageyoupassword | base64
OHYzWEZyVdfgUxfb2R6
apiVersion: v1
kind: Secret
metadata:
  name: xxl-job-admin
  namespace: test
data:
  DB_PWD: OHYzWEZyVdfgUxfb2R6

Deployment xxl-job-admin

apiVersion: apps/v1
kind: Deployment
metadata:
  name: xxl-job-admin
  namespace: test
  labels:
    name: xxl-job-admin
spec:
  selector:
    matchLabels:
      name: xxl-job-admin
  template:
    metadata:
      name: xxl-job-admin
      labels:
        name: xxl-job-admin
    spec:
      containers:
      - name: xxl-job-admin
        image: hub.your.com/xxl-job-admin:2.2.0
        imagePullPolicy: IfNotPresent
        restartPolicy: OnFailure
        requests:
          cpu: 10m
          memory: 128Mi
        limits:
          cpu: 32m
          memory: 1024Mi
        env:
          - name: DB_PWD
            valueFrom:
              secretKeyRef:
                name: xxl-job-admin
                key: DB_PWD
        ports:
        - name: http
          containerPort: 8080
        - name: tcp 
          containerPort: 5555
        volumeMounts:
          - name: xxljob-log-pvc
            mountPath: /data/applogs
          - name: xxljob-config
            mountPath: /usr/local/config/
      volumes:
        - name: xxljob-log-pvc
          persistentVolumeClaim:
            claimName: xxl-job-admin
        - name: xxljob-config
          configMap:
            name: xxl-job-admin

svc xxl-job-admin

apiVersion: v1
kind: Service
metadata:
 name: xxl-job-admin
 namespace: test
spec:
 type: NodePort
 ports:
 - name: xxl-job-admin
   port: 8080
   protocol: TCP
   targetPort: 8080
   nodePort: 10006
 - name: xxl-tcp
   port: 5555
   protocol: TCP
   targetPort: 5555
   nodePort: 10007
 selector:
   name: xxl-job-admin


访问

用户名admin 密码123456

LEAVE A COMMENT

Captcha Code