apiVersion: apps/v1 kind: Deployment metadata: name: ${APP_NAME} namespace: ${NAMESPACE} labels: app: ${APP_NAME} spec: replicas: ${REPLICAS} selector: matchLabels: app: ${APP_NAME} template: metadata: labels: app: ${APP_NAME} spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: alibabacloud.com/nodepool-id operator: In values: - ${NODE_POOL_ID} terminationGracePeriodSeconds: 30 initContainers: - name: ${APP_NAME}-init image: busybox command: [ 'mkdir', '-p', "/data/logs/gc" ] volumeMounts: - name: ${APP_NAME}-volume mountPath: /data containers: - name: ${APP_NAME} image: ${IMAGE} imagePullPolicy: Always resources: requests: memory: ${MEMORY_REQUEST} limits: memory: ${MEMORY_LIMIT} ports: - containerPort: ${PORT} protocol: TCP - containerPort: 1024 protocol: TCP lifecycle: preStop: exec: command: [ "curl","-X","POST","http://127.0.0.1:1024/actuator/offline" ] startupProbe: httpGet: scheme: HTTP path: /actuator/health port: 1024 failureThreshold: 10 periodSeconds: 5 livenessProbe: httpGet: scheme: HTTP path: /actuator/health/liveness port: 1024 periodSeconds: 10 readinessProbe: httpGet: scheme: HTTP path: /actuator/health/readiness port: 1024 periodSeconds: 10 volumeMounts: - name: ${APP_NAME}-volume mountPath: /data volumes: - name: ${APP_NAME}-volume hostPath: path: /share/pod/data/${APP_NAME} type: DirectoryOrCreate