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
相关推荐
没有bug.的程序员3 小时前
微服务基础设施清单:必须、应该、可以、无需的四级分类指南
java·jvm·微服务·云原生·容器·架构
weixin_462446235 小时前
【实战原创】Docker 清理指南:以 Coze Studio 为例的资源保留与清理实践(非万能方案)
docker·容器·eureka
hkNaruto5 小时前
【docker】docker exec -it 报错 open /dev/pts/0: operation not permitted
运维·docker·容器
一个想打拳的程序员5 小时前
无需复杂配置!用%20docker-webtop%20打造跨设备通用%20Linux%20桌面,加载cpolar远程访问就这么简单
java·人工智能·docker·容器
Wang's Blog5 小时前
RabbitMQ: 解析Kubernetes原理与高可用集群部署实践
分布式·kubernetes·rabbitmq
山沐与山5 小时前
【K8S】Kubernetes架构与原理详解
容器·架构·kubernetes
小陈运维5 小时前
升级二进制kubernetes集群(小版本升级)
kubernetes
小陈运维5 小时前
二进制安装Kubernetes(k8s)v1.35.0
kubernetes
山沐与山5 小时前
【Docker】Docker容器技术详解
运维·docker·容器