問題背景
在k8s上部署eureka的時候赴捞,3個節(jié)點的注冊列表各不一樣可很,完全沒起到注冊中心集群的效果睛驳,相當(dāng)于3個節(jié)點各自為戰(zhàn)蒜田。了解相關(guān)信息后(查了Stack Overflow)稿械,需要在springboot的服務(wù)中配置pod的hostname和域名,但k8s本身又是無狀態(tài)部署冲粤,IP會一直發(fā)生改動美莫。
關(guān)鍵字
解決方案流程,暫時沒有時間寫的比較清楚梯捕,下面列出關(guān)鍵詞和主體思路厢呵,后續(xù)還有需要的話直接從以下關(guān)鍵詞入手可以解決問題
- kubernetes statefulset
- k8s配置文件中的yaml配置環(huán)境變量,直接在springboot的配置文件中用${}使用即可
配置文件一覽
springboot配置文件
spring:
application:
name: register-center
server:
port: 33001
eureka:
environment: prod
server:
enable-self-preservation: false
eviction-interval-timer-in-ms: 60000
instance:
appname: ${spring.application.name}
prefer-ip-address: false
hostname: ${MY_POD_NAME}.push-register-center
instance-id: ${spring.cloud.client.ip-address}:${server.port}
lease-renewal-interval-in-seconds: 30
lease-expiration-duration-in-seconds: 90
client:
registry-fetch-interval-seconds: 2
register-with-eureka: true
fetch-registry: true
service-url:
# defaultZone: @eureka.url@
defaultZone: http://push-register-center-0.push-register-center:33001/eureka/,http://push-register-center-1.push-register-center:33001/eureka/
k8s配置文件
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: push-register-center
namespace: rec
labels:
service: push-register-center
spec:
replicas: 2
serviceName: push-register-center
selector:
matchLabels:
service: push-register-center
template:
metadata:
labels:
service: push-register-center
spec:
containers:
- name: push-register-center
image: hub.meiyou.com/ai-center/push-register-center:myversion
env:
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
resources:
limits:
cpu: 8
memory: 8Gi
requests:
cpu: 4
memory: 4Gi
imagePullPolicy: IfNotPresent
ports:
- containerPort: 33001
livenessProbe:
httpGet:
path: /actuator/health
port: 33001
initialDelaySeconds: 20
periodSeconds: 5
timeoutSeconds: 5
readinessProbe:
httpGet:
path: /actuator/health
port: 33001
initialDelaySeconds: 20
periodSeconds: 5
timeoutSeconds: 5
nodeSelector:
cpu-alg2: "true"
---
apiVersion: v1
kind: Service
metadata:
name: push-register-center
namespace: rec
spec:
type: NodePort
ports:
- port: 33001
protocol: TCP
nodePort: 33051
selector:
service: push-register-center
最終結(jié)果
發(fā)布變得非常平滑傀顾,3個節(jié)點的注冊列表變得一致襟铭,springbootadmin再也沒有一直叫掉節(jié)點的告警了,舒服了