cluster-xxl-job-admin
MySQL: 参考 external-mysql 文章
日志存储采用 hostpath 方式
Pod 多节点反亲和性调度,单节点失效
Node 调度, 只运行在指定的节点上
数据库导入: https://github.com/xuxueli/xxl-job/blob/2.4.1/doc/db/tables_xxl_job.sql
[root@master test]# cat cluster-xxl-job-admin-statefulset.yaml
# web访问服务
apiVersion: v1
kind: Service
metadata:
name: xxl-job-admin-svc
labels:
app: xxl-job-admin
spec:
type: NodePort
ports:
- name: web
port: 8080
targetPort: 8080
nodePort: 30080
selector:
app: xxl-job-admin
---
# 数据库导入: https://github.com/xuxueli/xxl-job/blob/2.4.1/doc/db/tables_xxl_job.sql
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: xxl-job-admin
namespace: default
labels:
app: xxl-job-admin
spec:
serviceName: xxl-job-admin-svc
replicas: 3
selector:
matchLabels:
app: xxl-job-admin
template:
metadata:
labels:
app: xxl-job-admin
spec:
# 节点打上中间件标签并污染:kubectl taint nodes <node-name> middleware=true:NoSchedule
#tolerations:
# - key: "middleware"
# operator: "Equal"
# value: "true"
# effect: "NoSchedule"
# 当多节点生效:不允许同一个pod调度到同一个节点
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: "app"
operator: In
values:
- middleware
topologyKey: "kubernetes.io/hostname"
containers:
- name: xxl-job-admin
image: xuxueli/xxl-job-admin:2.4.0
imagePullPolicy: IfNotPresent
resources:
requests:
memory: "300Mi"
cpu: "0.2"
limits:
memory: "8Gi"
cpu: "8"
livenessProbe:
httpGet:
path: /xxl-job-admin/actuator/health
port: 8080
scheme: HTTP
failureThreshold: 10
initialDelaySeconds: 10
periodSeconds: 5
timeoutSeconds: 1
readinessProbe:
httpGet:
path: /xxl-job-admin/actuator/health
port: 8080
scheme: HTTP
failureThreshold: 10
initialDelaySeconds: 10
periodSeconds: 5
timeoutSeconds: 1
env:
- name: TZ
value: America/Sao_Paulo # 巴西: America/Sao_Paulo; 上海:Asia/Shanghai
- name: PARAMS
value: "--spring.datasource.url=jdbc:mysql://external-mysql:3306/xxl_job?Unicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=America/Sao_Paulo --spring.datasource.username=root --spring.datasource.password=123456"
ports:
- containerPort: 8080
volumeMounts:
- name: xxl-job-admin-log
mountPath: /data/applogs
volumes:
- name: xxl-job-admin-log
hostPath:
path: /data/k8s/xxl-job-admin/
Last updated