deploy-tmp.yaml 5.6 KB

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