K8S如何部署xxl-job?

AI 总结

本文介绍了在Kubernetes中部署xxl-job 2.4.0版本的过程。首先下载并解压官方压缩包,获取初始化SQL脚本,在MySQL中创建数据库和用户并执行脚本。然后创建ConfigMap配置数据库连接参数,接着创建Deployment部署xxl-job-admin镜像,通过环境变量引用ConfigMap。再创建LoadBalancer类型的Service暴露服务,最后通过默认账号admin/123456访问系统。

需求:业务需要部署xxl-job做定时任务

我这边以2.4.0为例

步骤二:先初始化数据库

github地址:https://github.com/xuxueli/xxl-job/releases

1.找到2.4.0版本,下载压缩包,得到xx-job-2.4.0.zip

解压文件,找到文件xxl-job-2.4.0\doc\db\tables_xxl_job.sql

tables_xxl_job.sql,就是xx-job的初始化sql

2.连接到自己的数据库,创建新库和对应的用户

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

CREATE USER 'xxl_job_rw'@'%' IDENTIFIED BY 'xxljob@1234';

GRANT ALL PRIVILEGES ON `xxl_job`.* TO 'xxl_job_rw'@'%';

FLUSH PRIVILEGES;

3.执行sql文件,初始化数据

步骤二:创建configmap文件,指定xxl-job用的数据库

kind: ConfigMap
apiVersion: v1
metadata:
  name: xxl-job-config
  namespace: default
data:
  PARAMS: |-
    --spring.datasource.url=jdbc:mysql://10.38.28.5:3306/xxl_job?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai
    --spring.datasource.username=xxl_job_rw
    --spring.datasource.password=xxljob@1234
    --server.servlet.context-path=/

步骤三:创建deployment资源

apiVersion: apps/v1
kind: Deployment
metadata:
  name: vms-xxl-job
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: vms-xxl-job
  template:
    metadata:
      labels:
        app: vms-xxl-job
    spec:
      volumes:
        - name: vol-178418615222432701
          hostPath:
            path: /etc/localtime
            type: ''
      containers:
        - name: xxl-job
          image: xuxueli/xxl-job-admin:2.4.0
          ports:
            - containerPort: 8080
          env:
            - name: PARAMS
              valueFrom:
                configMapKeyRef:
                  name: vms-xxl-job-config
                  key: PARAMS
          resources:
            limits:
              cpu: '2'
              memory: 2Gi
            requests:
              cpu: 250m
              memory: 512Mi
          volumeMounts:
            - name: vol-178418615222432701
              readOnly: true
              mountPath: /etc/localtime
      imagePullSecrets:
        - name: default-secret

步骤四,创建svc

这里因为我用的是云ELB,所有type填LoadBalancer

kind: Service
apiVersion: v1
metadata:
  name: vms-xxl-job
  namespace: default
  labels:
    app: vms-xxl-job
spec:
  ports:
    - name: cce-service-0
      protocol: TCP
      port: 18000
      targetPort: 8080
  selector:
    app: vms-xxl-job
  type: LoadBalancer
  loadBalancerIP: 10.38.28.6
  externalTrafficPolicy: Cluster

步骤五,访问一下看看

账号密码:默认admin/123456

评论 (0)