deploy-tmp.yaml 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. ---
  2. apiVersion: apps/v1
  3. kind: StatefulSet
  4. metadata:
  5. name: realtime-yuewen
  6. namespace: pro
  7. labels:
  8. app: realtime-yuewen
  9. spec:
  10. serviceName: realtime-yuewen
  11. replicas: 2
  12. selector:
  13. matchLabels:
  14. app: realtime-yuewen
  15. template:
  16. metadata:
  17. labels:
  18. app: realtime-yuewen
  19. spec:
  20. terminationGracePeriodSeconds: 180
  21. dnsPolicy: ClusterFirstWithHostNet
  22. dnsConfig:
  23. nameservers:
  24. - 223.5.5.5
  25. - 10.26.22.50
  26. - 10.26.22.150
  27. initContainers:
  28. - name: init
  29. image: hub.evbj.easou.com/dev/busybox
  30. command: [ "chmod","777","-R","/data" ]
  31. imagePullPolicy: IfNotPresent
  32. volumeMounts:
  33. - name: volume
  34. mountPath: /data
  35. #nodeSelector:
  36. # app.touchrs: touchrs
  37. # affinity:
  38. # podAntiAffinity:
  39. # preferredDuringSchedulingIgnoredDuringExecution:
  40. # - weight: 100
  41. # podAffinityTerm:
  42. # labelSelector:
  43. # matchExpressions:
  44. # - key: app
  45. # operator: In
  46. # values:
  47. # - realtime-yuewen
  48. # topologyKey: kubernetes.io/hostname
  49. containers:
  50. - name: realtime-yuewen
  51. image: hub.evbj.easou.com/pro/realtime-yuewen:r181335
  52. imagePullPolicy: IfNotPresent
  53. env:
  54. - name: MY_NODE_NAME
  55. valueFrom:
  56. fieldRef:
  57. fieldPath: spec.nodeName
  58. - name: MY_POD_IP
  59. valueFrom:
  60. fieldRef:
  61. fieldPath: status.podIP
  62. - name: MY_POD_NAME
  63. valueFrom:
  64. fieldRef:
  65. fieldPath: metadata.name
  66. - name: MY_POD_NAMESPACE
  67. valueFrom:
  68. fieldRef:
  69. fieldPath: metadata.namespace
  70. - name: JAVA_OPTS
  71. value: "-server -Xmx2g -Xms2g -Xss512k -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=product"
  72. ports:
  73. - containerPort: 8080
  74. name: port
  75. - containerPort: 8001
  76. name: "jvm-debug"
  77. volumeMounts:
  78. - name: volume
  79. mountPath: /data
  80. lifecycle:
  81. preStop:
  82. exec:
  83. command: ["/bin/sh","-c","curl -H 'loginName:admin' -H 'password:ea1so2ua3dm4in5' -X POST 127.0.0.1:8080/actuator/shutdown"]
  84. livenessProbe:
  85. httpGet:
  86. path: /actuator/health
  87. port: 8080
  88. httpHeaders:
  89. - name: loginName
  90. value: admin
  91. - name: password
  92. value: ea1so2ua3dm4in5
  93. initialDelaySeconds: 40 #60s后启动第一次探测
  94. periodSeconds: 15 # 每隔10s启动一次探测
  95. timeoutSeconds: 3 # 超时时间3s
  96. successThreshold: 1 # 成功1次即表示容器健康
  97. failureThreshold: 5 # 连续5次失败,则判定容器不健康,默认3次
  98. readinessProbe:
  99. tcpSocket:
  100. port: 8080
  101. initialDelaySeconds: 40
  102. periodSeconds: 15
  103. - image: hub.evbj.easou.com/pro/fluent-bit
  104. imagePullPolicy: IfNotPresent
  105. name: fluent-bit
  106. ports:
  107. - containerPort: 2020
  108. name: metrics
  109. protocol: TCP
  110. terminationMessagePath: /dev/termination-log
  111. terminationMessagePolicy: File
  112. volumeMounts:
  113. - name: volume #日志同时挂载在nginx和filebeat中
  114. mountPath: /data
  115. - name: fluent-bit-config
  116. mountPath: /fluent-bit/etc/fluent-bit.conf
  117. subPath: fluent-bit.conf
  118. volumes:
  119. - name: fluent-bit-config
  120. configMap:
  121. name: fluent-bit-config-realtime-yuewen
  122. items:
  123. - key: fluent-bit.conf
  124. path: fluent-bit.conf
  125. volumeClaimTemplates:
  126. - metadata:
  127. name: volume
  128. spec:
  129. accessModes: [ "ReadWriteOnce" ]
  130. storageClassName: ceph-block
  131. resources:
  132. requests:
  133. storage: 100Gi
  134. ---
  135. apiVersion: v1
  136. kind: Service
  137. metadata:
  138. name: realtime-yuewen-svc
  139. namespace: pro
  140. labels:
  141. app: realtime-yuewen-svc
  142. spec:
  143. type: NodePort
  144. ports:
  145. - port: 80
  146. targetPort: 8080
  147. name: "main"
  148. selector:
  149. app: realtime-yuewen
  150. ---
  151. apiVersion: networking.k8s.io/v1
  152. kind: Ingress
  153. metadata:
  154. name: realtime-yuewen-ingress
  155. namespace: pro
  156. spec:
  157. rules:
  158. - host: ywrealtime.appeasou.com
  159. http:
  160. paths:
  161. - path: /
  162. pathType: Prefix
  163. backend:
  164. service:
  165. name: realtime-yuewen-svc
  166. port:
  167. number: 8080
  168. - host: pro-realtime-yuewen.ieasou.cn
  169. http:
  170. paths:
  171. - path: /
  172. pathType: Prefix
  173. backend:
  174. service:
  175. name: realtime-yuewen-svc
  176. port:
  177. number: 8080
  178. ingressClassName: nginx
  179. ---
  180. apiVersion: v1
  181. kind: ConfigMap
  182. metadata:
  183. name: fluent-bit-config-realtime-yuewen
  184. namespace: pro
  185. data:
  186. fluent-bit.conf: |
  187. [INPUT]
  188. Name tail
  189. Path /data/logs/app/access.log
  190. Parser cri
  191. Tag kube.*
  192. Mem_Buf_Limit 5MB
  193. Skip_Long_Lines On
  194. [OUTPUT]
  195. Name kafka
  196. Match *
  197. Brokers 10.26.22.124:8092,10.26.22.121:8092,10.26.22.120:8092,10.26.22.102:8092,10.26.22.122:8092
  198. Topics realtime_yuewen_nginx
  199. Timestamp_Key @timestamp
  200. Retry_Limit false
  201. # hides errors "Receive failed: Disconnected" when kafka kills idle connections
  202. rdkafka.log.connection.close false
  203. # producer buffer is not included in http://fluentbit.io/documentation/0.12/configuration/memory_usage.html#estimating
  204. rdkafka.queue.buffering.max.kbytes 10240
  205. # for logs you'll probably want this ot be 0 or 1, not more
  206. rdkafka.request.required.acks 1