deploy-tmp.yaml 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. ---
  2. apiVersion: apps/v1
  3. kind: StatefulSet
  4. metadata:
  5. name: offline-process-schedule
  6. namespace: qa
  7. labels:
  8. app: offline-process-schedule
  9. spec:
  10. serviceName: offline-process-schedule
  11. replicas: 1
  12. selector:
  13. matchLabels:
  14. app: offline-process-schedule
  15. template:
  16. metadata:
  17. labels:
  18. app: offline-process-schedule
  19. spec:
  20. terminationGracePeriodSeconds: 180
  21. dnsPolicy: "None"
  22. dnsConfig:
  23. nameservers:
  24. - 223.5.5.5
  25. - 10.108.30.101
  26. - 10.26.22.50
  27. searches:
  28. - pro.svc.cluster.local
  29. - svc.cluster.local
  30. - cluster.local
  31. options:
  32. - name: ndots
  33. value: "5"
  34. initContainers:
  35. - name: init
  36. image: hub.evbj.easou.com/dev/busybox
  37. command: [ "chmod","777","-R","/data" ]
  38. imagePullPolicy: IfNotPresent
  39. volumeMounts:
  40. - name: volume
  41. mountPath: /data
  42. #nodeSelector:
  43. # app.touchrs: touchrs
  44. affinity:
  45. podAntiAffinity:
  46. preferredDuringSchedulingIgnoredDuringExecution:
  47. - weight: 100
  48. podAffinityTerm:
  49. labelSelector:
  50. matchExpressions:
  51. - key: app
  52. operator: In
  53. values:
  54. - offline-process-schedule
  55. topologyKey: kubernetes.io/hostname
  56. containers:
  57. - name: offline-process-schedule
  58. image: hub.evbj.easou.com/qa/offline-process-schedule:r189380
  59. imagePullPolicy: IfNotPresent
  60. env:
  61. - name: MY_NODE_NAME
  62. valueFrom:
  63. fieldRef:
  64. fieldPath: spec.nodeName
  65. - name: MY_POD_IP
  66. valueFrom:
  67. fieldRef:
  68. fieldPath: status.podIP
  69. - name: MY_POD_NAME
  70. valueFrom:
  71. fieldRef:
  72. fieldPath: metadata.name
  73. - name: MY_POD_NAMESPACE
  74. valueFrom:
  75. fieldRef:
  76. fieldPath: metadata.namespace
  77. - name: JAVA_OPTS
  78. value: "-server -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8001,suspend=n -Xmx2g -Xms2g -Xss512k -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=test"
  79. ports:
  80. - containerPort: 8080
  81. name: port
  82. - containerPort: 8001
  83. name: "jvm-debug"
  84. volumeMounts:
  85. - name: volume
  86. mountPath: /data
  87. lifecycle:
  88. preStop:
  89. exec:
  90. command: ["/bin/sh","-c","curl -H 'loginName:admin' -H 'password:ea1so2ua3dm4in5' -X POST 127.0.0.1:8080/actuator/shutdown"]
  91. livenessProbe:
  92. httpGet:
  93. path: /actuator/health
  94. port: 8080
  95. httpHeaders:
  96. - name: loginName
  97. value: admin
  98. - name: password
  99. value: ea1so2ua3dm4in5
  100. initialDelaySeconds: 40 #60s后启动第一次探测
  101. periodSeconds: 15 # 每隔10s启动一次探测
  102. timeoutSeconds: 3 # 超时时间3s
  103. successThreshold: 1 # 成功1次即表示容器健康
  104. failureThreshold: 5 # 连续5次失败,则判定容器不健康,默认3次
  105. readinessProbe:
  106. tcpSocket:
  107. port: 8080
  108. initialDelaySeconds: 40
  109. periodSeconds: 15
  110. - image: hub.evbj.easou.com/pro/filebeat:7.13.3
  111. imagePullPolicy: IfNotPresent
  112. name: filebeat
  113. volumeMounts:
  114. - name: volume #日志同时挂载在nginx和filebeat中
  115. mountPath: /data
  116. - name: filebeat-config
  117. mountPath: /usr/share/filebeat/filebeat.yml
  118. subPath: filebeat.yml
  119. volumes:
  120. - name: filebeat-config
  121. configMap:
  122. name: filebeat-config-offline-process-schedule
  123. items:
  124. - key: filebeat.yml
  125. path: filebeat.yml
  126. volumeClaimTemplates:
  127. - metadata:
  128. name: volume
  129. spec:
  130. accessModes: [ "ReadWriteOnce" ]
  131. storageClassName: rbd
  132. resources:
  133. requests:
  134. storage: 100Gi
  135. ---
  136. apiVersion: v1
  137. kind: Service
  138. metadata:
  139. name: offline-process-schedule-svc
  140. namespace: qa
  141. labels:
  142. app: offline-process-schedule-svc
  143. spec:
  144. type: NodePort
  145. ports:
  146. - port: 80
  147. targetPort: 8080
  148. name: "main"
  149. selector:
  150. app: offline-process-schedule
  151. ---
  152. apiVersion: networking.k8s.io/v1
  153. kind: Ingress
  154. metadata:
  155. name: offline-process-schedule-ingress
  156. namespace: qa
  157. spec:
  158. ingressClassName: nginx
  159. rules:
  160. - host: qa-offline-process-schedule.ieasou.cn
  161. http:
  162. paths:
  163. - path: /
  164. pathType: ImplementationSpecific
  165. backend:
  166. service:
  167. name: offline-process-schedule-svc
  168. port:
  169. number: 8080
  170. ---
  171. apiVersion: v1
  172. kind: ConfigMap
  173. metadata:
  174. name: filebeat-config-offline-process-schedule
  175. namespace: qa
  176. data:
  177. filebeat.yml: |
  178. filebeat.inputs:
  179. - type: log
  180. enabled: true
  181. #多行合并
  182. multiline.pattern: '^\[[0-9]{4}-[0-9]{2}-[0-9]{2}'
  183. multiline.negate: true
  184. multiline.match: after
  185. multiline.timeout: 30
  186. fields:
  187. log_topic: offline-process-schedule
  188. fields_under_root: true
  189. paths:
  190. - "/data/logs/app/*.log"
  191. - "/data/logs/*.log"
  192. output.kafka:
  193. version: 2.0.0
  194. enable: true
  195. hosts: ["kafka-0.kafka-headless.qa.svc.cluster.local:9093", "kafka-1.kafka-headless.qa.svc.cluster.local:9093", "kafka-2.kafka-headless.qa.svc.cluster.local:9093"]
  196. topic: 'offline-process-topic'
  197. required_acks: 1
  198. partition.round_robin:
  199. reachable_only: false
  200. compression: gzip
  201. max_message_bytes: 1000000