k8s部署xxl-job

https://www.xuxueli.com/xxl-job/

下载项目源码并解压,获取 "调度数据库初始化SQL脚本" 并执行即可

数据库初始化SQL脚本位置: /xxl-job/doc/db/tables_xxl_job.sql

Secret

yaml 复制代码
apiVersion: v1
data:
  mysql.database: eHhsX2pvYg==
  mysql.password: VFNIQG5hY29zZGIjMjAyNWxhbg==
  mysql.url: eHhsLWpvYi1hZG1pbi5zcHJpbmcuZGF0YXNvdXJjZS51cmw=
  mysql.user: eHhsLWpvYg==
kind: Secret
metadata:
  labels:
    app: xxl-job-admin
  name: xxl-job-admin-creds
  namespace: default
type: Opaque

ConfigMap

yaml 复制代码
apiVersion: v1
data:
  application.yaml: |-
    management:
      health:
        mail:
          enabled: false
      server:
        servlet:
          context-path: /actuator
    mybatis:
      mapper-locations: classpath:/mybatis-mapper/*Mapper.xml
    server:
      port: 8080
      servlet:
        context-path: /xxl-job-admin
    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        hikari:
          auto-commit: true
          connection-test-query: SELECT 1
          connection-timeout: 10000
          idle-timeout: 30000
          max-lifetime: 900000
          maximum-pool-size: 30
          minimum-idle: 10
          pool-name: HikariCP
          validation-timeout: 1000
        password: xxxxxx
        type: com.zaxxer.hikari.HikariDataSource
        url: jdbc:mysql://x.x.x.x:3306/xxl_job?useUnicode=true&useSSL=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=UTC
        username: xxl_job
      freemarker:
        charset: UTF-8
        request-context-attribute: request
        settings:
          number_format: 0.##########
        suffix: .ftl
        templateLoaderPath: classpath:/templates/
      mail:
        properties:
          mail:
            smtp:
              auth: true
              socketFactory:
                class: javax.net.ssl.SSLSocketFactory
              starttls:
                enable: true
                required: true
      mvc:
        servlet:
          load-on-startup: 0
        static-path-pattern: /static/**
      resources:
        static-locations: classpath:/static/
    xxl:
      job:
        accessToken: LUX9CiMlatGviDtzLCTBJo4eElan
        i18n: zh_CN
        logretentiondays: 10
        triggerpool:
          fast:
            max: 200
          slow:
            max: 100
kind: ConfigMap
metadata:
  labels:
    app: xxl-job-admin
  name: xxl-job-admin-config
  namespace: default

Deployment

yaml 复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: xxl-job-admin
  name: xxl-job-admin
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: xxl-job-admin
  template:
    metadata:
      labels:
        app: xxl-job-admin
    spec:
      containers:
      - env:
        - name: SPRING_CONFIG_IMPORT
          value: optional:configtree:/var/run/secrets/spring/
        - name: TZ
          value: Asia/Shanghai
        image: xuxueli/xxl-job-admin
        imagePullPolicy: IfNotPresent
        livenessProbe:
          failureThreshold: 3
          httpGet:
            path: /xxl-job-admin/actuator/health/liveness
            port: http
            scheme: HTTP
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        name: xxl-job-admin
        ports:
        - containerPort: 8080
          name: http
          protocol: TCP
        readinessProbe:
          failureThreshold: 3
          httpGet:
            path: /xxl-job-admin/actuator/health/readiness
            port: http
            scheme: HTTP
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        resources:
          limits:
            cpu: "1"
            memory: 2Gi
          requests:
            cpu: "1"
            memory: 2Gi
        startupProbe:
          failureThreshold: 30
          httpGet:
            path: /xxl-job-admin/actuator/health/liveness
            port: http
            scheme: HTTP
          initialDelaySeconds: 15
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        volumeMounts:
        - mountPath: /config
          name: config
        - mountPath: /var/run/secrets/spring/
          name: creds
        - mountPath: /etc
          name: timezone-conf
          subPath: timezone
      imagePullSecrets:
      - name: default-secret
      initContainers:
      - command:
        - cp
        - -rf
        - /usr/share/zoneinfo/Asia/Shanghai
        - /etc/localtime
        image: xuxueli/xxl-job-admin
        imagePullPolicy: IfNotPresent
        name: change-timezone
        volumeMounts:
        - mountPath: /etc
          name: timezone-conf
          subPath: timezone
      restartPolicy: Always
      volumes:
      - configMap:
          defaultMode: 420
          name: xxl-job-admin-config
        name: config
      - name: creds
        secret:
          defaultMode: 420
          secretName: xxl-job-admin-creds
      - emptyDir: {}
        name: timezone-conf

Service

yaml 复制代码
apiVersion: v1
kind: Service
metadata:
  labels:
    app: xxl-job-admin
  name: xxl-job-admin
  namespace: default
spec:
  allocateLoadBalancerNodePorts: true
  externalTrafficPolicy: Cluster
  internalTrafficPolicy: Cluster
  ports:
  - name: http
    nodePort: 30970
    port: 32765
    protocol: TCP
    targetPort: 8080
  selector:
    app: xxl-job-admin
  type: LoadBalancer
相关推荐
极客先躯3 小时前
高级java每日一道面试题-2026年02月09日-实战篇[Docker]-Docker 容器有哪些安全风险?如何缓解?
java·运维·网络·安全·docker·容器
yuanzhengme3 小时前
Ollama【部署 07】搭建本地智能体的简单说明(局域网离线部署Ollama+模型迁移+Docker部署AnythingLLM)
运维·docker·容器·大模型·ollama·本地智能体
运维老郭3 小时前
Kubernetes 二进制部署完全指南:从零搭建生产级HA集群
运维·云原生·kubernetes
成为你的宁宁4 小时前
【K8S黑盒监控实践:Probe配置、Prometheus验证与Grafana可视化】
kubernetes·grafana·prometheus
成为你的宁宁4 小时前
【Prometheus Operator监控K8S Nginx】
nginx·kubernetes·prometheus
宇明一不急5 小时前
k8s headless svc
云原生·容器·kubernetes
容器魔方5 小时前
Karmada v1.18 版本发布!新增混合云溢出式调度能力
人工智能·云原生·容器·华为云·云计算
是一个Bug5 小时前
AI Agent 的沙箱是什么?它和 Docker / 虚拟机有什么区别?
人工智能·docker·容器
成为你的宁宁6 小时前
【K8S使用Helm部署MySQL一主多从并集成Prometheus监控】
mysql·kubernetes·prometheus
从入门到放弃-咖啡豆6 小时前
记录一次docker部署过程和一些常用的docker指令
运维·docker·容器