需求
使用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