需求
使用k8s部署xxl-job,xxl-job的数据主要保存在mysql中,因此xxl-job运行时不需要考虑持久化问题。
这里使用2.4.1版本
导入mysql数据
github地址:https://github.com/xuxueli/xxl-job/releases
找到2.4.1版本,下载压缩包,得到xx-job-2.4.1.zip
解压文件,找到文件xxl-job-2.4.1\doc\db\tables_xxl_job.sql
tables_xxl_job.sql,就是xx-job的初始化sql
使用客户端工具DBeaver连接到mysql,创建数据库xxl_job
CREATE database if NOT EXISTS `xxl_job` default character set utf8mb4 collate utf8mb4_unicode_ci;
新建数据库用户nacos_all并授权
CREATE USER 'xxl_job_all'@'%' IDENTIFIED BY 'abcd@1234';
GRANT ALL PRIVILEGES ON nacos . * TO 'xxl_job_all'@'%';
FLUSH PRIVILEGES;
切换到数据库xxl_job,执行sql文件tables_xxl_job.sql,执行完成后,会得到相应的数据表。
编写yaml
xxl-job-admin.yaml
apiVersion: v1
kind: ConfigMap
apiVersion: v1
metadata:
name: xxl-job-config
namespace: middleware
data:
PARAMS: >-
--spring.datasource.url=jdbc:mysql://192.168.20.131:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
--spring.datasource.username=xxl_job_all
--spring.datasource.password=abcd@1234
--xxl.job.accessToken=22d697201b8953eabf5f8d901f30a037
--server.servlet.context-path=/xxl-job-admin
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: xxl-job-admin
namespace: middleware
labels:
app: xxl-job-admin
spec:
replicas: 1
selector:
matchLabels:
app: xxl-job-admin
template:
metadata:
creationTimestamp: null
labels:
app: xxl-job-admin
spec:
containers:
- name: xxl-job-admin
image: xuxueli/xxl-job-admin:2.4.1
ports:
- containerPort: 8080
protocol: TCP
env:
- name: TZ
value: Asia/Shanghai
- name: PARAMS
valueFrom:
configMapKeyRef:
name: xxl-job-config
key: PARAMS
resources:
limits:
cpu: '1'
memory: 2Gi
requests:
cpu: 500m
memory: 512Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
imagePullPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: xxl-job-admin-svc
namespace: middleware
labels:
app: xxl-job-admin-svc
spec:
ports:
- name: xxl-job-admin
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: xxl-job-admin
type: NodePort
注意修改命名空间,数据库 用户名密码。
注意:xxl.job.accessToken不能为default_token,否则会出现xxl-job默认密钥漏洞
创建命名空间
kubectl create namespace middleware
部署应用
kubectl apply -f xxl-job-admin.yaml
等待几分钟,确保pod是Running状态
访问
访问xxl-job页面,这里使用的nodeport方式暴露端口
http://172.16.0.13:30124/xxl-job-admin
默认
用户名:admin
密码:123456