Openshift或者K8S上部署xxl-job

本案例以版本2.3.0为例

1. package jar by source code

source code:
https://github.com/xuxueli/xxl-job/blob/2.3.0/

2. init mysql database

sql code:
https://github.com/xuxueli/xxl-job/blob/2.3.0/doc/db/tables_xxl_job.sql

3. build image:

refer to:
https://github.com/xuxueli/xxl-job/blob/2.3.0/xxl-job-admin/Dockerfile

dockerfile 复制代码
FROM openjdk:8-jre-slim
MAINTAINER xuxueli

ENV PARAMS=""

ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

ADD target/xxl-job-admin-*.jar /app.jar

ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /app.jar $PARAMS"]

4. deploy on ocp

yaml 复制代码
kind: Deployment
apiVersion: apps/v1
metadata:
  name: xxl-job
  labels:
    app.kubernetes.io/instance: xxl-job
spec:
  replicas: 1
  selector:
    matchLabels:
      app: xxl-job
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: xxl-job
        deployment: xxl-job
    spec:
      containers:
        - resources:
            limits:
              cpu: '1'
              memory: 4Gi
            requests:
              cpu: 500m
              memory: 4Gi
          readinessProbe:
            tcpSocket:
              port: 8080
            initialDelaySeconds: 30
            timeoutSeconds: 1
            periodSeconds: 10
            successThreshold: 1
            failureThreshold: 3
          name: xxl-job
          livenessProbe:
            tcpSocket:
              port: 8080
            initialDelaySeconds: 30
            timeoutSeconds: 1
            periodSeconds: 30
            successThreshold: 1
            failureThreshold: 3
          env:
            - name: PARAMS
              value: '--spring.datasource.url=jdbc:mysql://xxx:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai  --spring.datasource.username=xxx --spring.datasource.password=xxx' ###这里需要填写mysql的连接信息
          ports:
            - name: http
              containerPort: 8080
              protocol: TCP
          image: 'xxx' ## xxl-job的镜像地址
      restartPolicy: Always
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 0
      maxSurge: 1
  revisionHistoryLimit: 1
---
kind: Service
apiVersion: v1
metadata:
  name: xxl-job
spec:
  ports:
    - name: 8080-tcp
      protocol: TCP
      port: 8080
      targetPort: 8080
  type: ClusterIP
  selector:
    deployment: xxl-job
---
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
  name: xxl-job
spec:
  ingressClassName: openshift-default
  rules:
    - host: xxx ## 这边填写域名
      http:
        paths:
          - path: /xxl-job-admin
            pathType: Prefix
            backend:
              service:
                name: xxl-job
                port:
                  name: 8080-tcp

5. visit xxl-job web

初始的

username: admin

password: 123456

相关推荐
遇见火星5 小时前
Docker Compose 完全入门:一键启动所有容器
运维·docker·容器·docker compose
蘋天纬地10 小时前
k8s的控制平面是什么,有什么作用
容器·kubernetes
无级程序员12 小时前
clklog地域分析中的地名中英文对照问题解决
kubernetes
加加and减减15 小时前
Docker真实安装mysql8教程并优化配置
运维·mysql·docker·容器
qiuziqiqi17 小时前
ocker-compose.yml 和Dockerfile 区别
运维·docker·容器
杰克逊的日记17 小时前
如何在不影响业务的情况下对K8S集群升级
云原生·容器·kubernetes
逻极17 小时前
Kubernetes 从入门到精通:云原生容器编排
kubernetes·k8s·服务发现·容器编排
极客先躯19 小时前
高级java每日一道面试题-2026年02月03日-实战篇[Docker]-如何备份和恢复 Docker Volume?
运维·docker·容器·自动化·备份·持久化·恢复
江湖有缘19 小时前
自建私有任务管理平台|Docker Compose部署Ticky完整教程
运维·docker·容器
子牙老师19 小时前
你管这破玩意叫ChatGPT?
云原生·chatgpt·容器