apiVersion: apps/v1kind: Deploymentmetadata: labels: app: kubesphere component: $APP_NAME tier: backend # 服务名称 name: $APP_NAME # 项目名称 namespace: $NAMESPACEspec: progressDeadlineSeconds: 600 replicas: 2 selector: matchLabels: app: kubesphere component: $APP_NAME tier: backend template: metadata: labels: app: kubesphere component: $APP_NAME tier: backend spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: component operator: In values: - $APP_NAME topologyKey: "kubernetes.io/hostname" initContainers: # 初始化容器 - name: ur-paas-init image: $HARBOR_HOST/paas/init-container:1.0.2 imagePullPolicy: IfNotPresent command: ["cp", "-r", "/agent/", "/share/"] volumeMounts: - name: ur-share mountPath: /share resources: requests: cpu: 200m memory: 200Mi limits: cpu: 200m memory: 200Mi containers: - name: $APP_NAME image: $HARBOR_HOST/$HARBOR_NAMESPACE/$APP_NAME:$BRANCH_NAME-$BUILD_NUMBER command: ["sh","/home/run.sh"] imagePullPolicy: Always lifecycle: preStop: exec: command: ["sh","/home/preStop.sh"] env: - name: JAVA_OPTS value: $JAVA_OPTS - name: CACHE_IGNORE value: js|html - name: CACHE_PUBLIC_EXPIRATION value: 3d # 时区 - name: TZ value: Asia/Shanghai # 引入skywalking agent - name: SW_AGENT_NAME value: ${APP_NAME} - name: SW_JDBC_TRACE_SQL_PARAMETERS value: 'true' - name: SW_PLUGIN_JDBC_SQL_PARAMETERS_MAX_LENGTH value: '512' # skywalking oap 后端 - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES value: ${SW_BACKEND} # nacos 注册中心配置中心 - name: NACOS_HOST value: ${NACOS_HOST} - name: NACOS_NAMESPACE value: ${NACOS_NAMESPACE} - name: NACOS_GROUP value: ${NACOS_GROUP} - name: POD_ID valueFrom: fieldRef: fieldPath: metadata.name - name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP livenessProbe: httpGet: path: $HEALTH_PATH port: $CONTAINER_PORT initialDelaySeconds: 60 successThreshold: 1 timeoutSeconds: 10 failureThreshold: 10 periodSeconds: 10 readinessProbe: httpGet: path: $HEALTH_PATH port: $CONTAINER_PORT initialDelaySeconds: 30 timeoutSeconds: 10 failureThreshold: 30 periodSeconds: 5 ports: - containerPort: $CONTAINER_PORT protocol: TCP volumeMounts: - name: ur-share mountPath: /share - name: gc mountPath: /home/gc/ - name: dump mountPath: /home/dump/ - name: scripts mountPath: /home/run.sh subPath: run.sh - name: scripts mountPath: /home/preStop.sh subPath: preStop.sh - name: vol-log mountPath: /var/log policy: logs: rotate: Hourly annotations: format: '{"multi":{"mode":"regular","value":"([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))"}}' pathPattern: /info.log resources: limits: cpu: 1 memory: 2Gi requests: cpu: 1 memory: 2Gi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumes: # ur共享文件夹 - name: ur-share emptyDir: {} - name: vol-log emptyDir: {} - name: gc persistentVolumeClaim: claimName: $APP_NAME - name: dump persistentVolumeClaim: claimName: scp-dump - name: scripts configMap: defaultMode: 0777 name: $APP_NAME dnsPolicy: ClusterFirst imagePullSecrets: - name: $HARBOR_CREDENTIAL_ID restartPolicy: Always terminationGracePeriodSeconds: 40---apiVersion: v1kind: ConfigMapmetadata: name: $APP_NAME namespace: $NAMESPACEdata: run.sh: | #!/bin/bash echo -javaagent:/share/agent/skywalking/skywalking-agent.jar \ -XX:+UseContainerSupport \ -XX:MaxRAMPercentage=75.0 \ -XX:MinRAMPercentage=75.0 \ -XX:InitialRAMPercentage=75.0 \ -XX:MetaspaceSize=256m \ -XX:MaxMetaspaceSize=256m \ -XX:+UseConcMarkSweepGC \ -XX:+UseCMSCompactAtFullCollection \ -XX:+CMSClassUnloadingEnabled \ -XX:CMSInitiatingOccupancyFraction=80 \ -XX:+UseCMSInitiatingOccupancyOnly \ -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses \ -Dsun.rmi.dgc.server.gcInterval=2592000000 \ -Dsun.rmi.dgc.client.gcInterval=2592000000 \ -XX:+UseParNewGC \ -XX:ParallelGCThreads=4 \ -XX:SurvivorRatio=8 \ -XX:+PrintGCDetails \ -XX:+PrintGCDateStamps \ -XX:+PrintTenuringDistribution \ -XX:+PrintHeapAtGC \ -XX:+PrintReferenceGC \ -XX:+PrintGCApplicationStoppedTime \ -XX:+UseGCLogFileRotation \ -XX:NumberOfGCLogFiles=10 \ -XX:GCLogFileSize=1000m \ -Xloggc:/home/gc/gc-$${p}POD_ID-$(date +"%Y-%m-%d-%H-%M-%S").log \ -XX:+HeapDumpOnOutOfMemoryError \ -XX:HeapDumpPath=/home/dump/dump-$${p}POD_ID-$(date +"%Y-%m-%d-%H-%M-%S").hprof > /home/gc/java_tool_opts.sh export JAVA_TOOL_OPTIONS=$(cat /home/gc/java_tool_opts.sh) java -jar ${${p}JAVA_OPTS} -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=10000 -Dsun.net.client.defaultReadTimeout=30000 -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom *.jar preStop.sh: | #!/bin/bash curl -XPUT http://${NACOS_HOST}/nacos/v1/ns/instance?serviceName=${APP_NAME}\&groupName=${NACOS_GROUP}\&namespaceId=${NACOS_NAMESPACE}\&ip=$${p}POD_IP\&port=${CONTAINER_PORT}\&enable=false sleep 40s ---kind: PersistentVolumeClaimapiVersion: v1metadata: name: $APP_NAME namespace: $NAMESPACEspec: accessModes: - ReadWriteMany volumeMode: Filesystem resources: requests: storage: 2Gi storageClassName: sfsturbo-ur-scp---apiVersion: autoscaling/v1kind: HorizontalPodAutoscalermetadata: annotations: extendedhpa.metrics: '[{"type":"Resource","name":"cpu","targetType":"Utilization","targetRange":{"low":"55","high":"65"}}]' extendedhpa.option: '{"downscaleWindow":"60m","upscaleWindow":"0m"}' name: $APP_NAME namespace: $NAMESPACEspec: minReplicas: 2 maxReplicas: 6 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: $APP_NAME targetCPUUtilizationPercentage: 60


