deploy-tmp.yaml 5.9 KB

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