xxl-job——k8s下搭建服务

1、创建mysql数据库
以管理员的身份连接到k8s集群中部署的mysql,并且创建数据库及用户

create database xxl_job;
create user aolingo@'%' identified by 'Aolingo2025';
grant all on xxl_job.* to aolingo@'%';
flush privileges;

2、导入xxl-job需要的表结构
tables_xxl_job.sql

mysql -h 192.168.3.109 -P 30002 -u aolingo -p < tables_xxl_job.sql

3、编写部署yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: xxl-job-admin
  namespace: iot
spec:
  replicas: 1
  selector:
    matchLabels:
      app: xxl-job-admin
  template:
    metadata:
      labels:
        app: xxl-job-admin
    spec:
      containers:
        - name: xxl-job-admin
          image: harbor.xxxxxx.com/library/xxl-job-admin:2.5.0
          ports:
            - containerPort: 8080
          env:
            - name: PARAMS 
              value: 
                --spring.datasource.url=jdbc:mysql://mysql-service:3306/xxl_job?Unicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=true&useSSL=false 
                --spring.datasource.username=aolingo
                --spring.datasource.password=Aolingo2025 
                --spring.mail.username=your-email@163.com
                --spring.mail.password=your-pass 
                --xxl.job.admin.username=admin
                --xxl.job.admin.password=ST!XCDrAcJFgLx9
                --xxl.job.accessToken=aolingo_xxljob         
---
# ============================
# 内部访问 Service (ClusterIP)
# ============================
apiVersion: v1
kind: Service
metadata:
  name: xxl-job-admin
  namespace: iot
spec:
  type: ClusterIP
  selector:
    app: xxl-job-admin
  ports:
    - name: web
      port: 8080
      targetPort: 8080

---
apiVersion: v1
kind: Service
metadata:
  name: xxl-job-admin-nodeport
  namespace: iot
spec:
  type: NodePort
  ports:
    - name: web
      port: 8080
      targetPort: 8080
      nodePort: 30088
  selector:
    app: xxl-job-admin

4、更新admin账号的密码

# 生成密码
echo -n 'ST!XCDrAcJFgLx9' | md5sum

#需要通过sql语句更新
mysql -h 192.168.3.109 -P 30002 -u aolingo -p
mysql> use xxl_job;
mysql> update xxl_job_user set password='5f4c07962ce14250cc69012b365e8959' where username='admin';

5、验证

http://192.168.88.21:30088/xxl-job-admin/

6、测试

一定要注意,token是通过Header传入的,传入错误会报token验证失败的错误。

#windows平台下测试
curl -X POST -H "Content-Type: application/json" -H "XXL-JOB-ACCESS-TOKEN:aolingo_xxljob " -d "{\"registryGroup\":\"EXECUTOR\",\"registryKey\":\"xxl-job-executor\",\"registryValue\":\"http://192.168.88.21:9999/\"}" http://192.168.88.21:30088/xxl-job-admin/api/registry

#Linux平台上测试
curl -X POST \
-H "Content-Type: application/json" \
-H "XXL-JOB-ACCESS-TOKEN:aolingo_xxljob " \
-d '{
	"registryGroup": "EXECUTOR",
	"registryKey": "xxl-job-executor",
	"registryValue": "http://192.168.88.21:9999/"
}' http://192.168.88.21:30088/xxl-job-admin/api/registry

7、安装调试软件

在测试过程中可能需要到xxl-job的容器内部进行测试,需要更换为阿里云源及安装相应的软件。

更换源

cat > /etc/apt/sources.list << 'EOF'
# 阿里云 Debian 11 镜像源
deb https://mirrors.aliyun.com/debian/ bullseye main contrib non-free
deb-src https://mirrors.aliyun.com/debian/ bullseye main contrib non-free

deb https://mirrors.aliyun.com/debian-security/ bullseye-security main contrib non-free
deb-src https://mirrors.aliyun.com/debian-security/ bullseye-security main contrib non-free

deb https://mirrors.aliyun.com/debian/ bullseye-updates main contrib non-free
deb-src https://mirrors.aliyun.com/debian/ bullseye-updates main contrib non-free

deb https://mirrors.aliyun.com/debian/ bullseye-backports main contrib non-free
deb-src https://mirrors.aliyun.com/debian/ bullseye-backports main contrib non-free
EOF

安装软件

apt install procps dnsutils net-tools curl