我正在kubernetes集群(v1.15.2)中部署eureka,这是我的Yaml:
apiVersion: v1
kind: Service
metadata:
name: eureka
labels:
app: eureka
spec:
clusterIP: None
ports:
- name: server
port: 8761
targetPort: 8761
- name: management
port: 8081
selector:
app: eureka
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: eureka
labels:
app: eureka
spec:
serviceName: eureka-service
replicas: 1
podManagementPolicy: Parallel #Pod启停顺序管理
selector:
matchLabels:
app: eureka
template:
metadata:
labels:
app: eureka
spec:
terminationGracePeriodSeconds: 10 #当删除Pod时,等待时间
containers:
- name: eureka
image: registry.cn-hangzhou.aliyuncs.com/dabai_app_k8s/dabai_fat/soa-eureka:v1.0.0
ports:
- name: server
containerPort: 8761
- name: management
containerPort: 8081
env:
- name: APP_NAME
value: "eureka"
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: APP_OPTS
value: "
--spring.application.name=${APP_NAME}
--eureka.instance.hostname=${POD_NAME}.${APP_NAME}
--registerWithEureka=true
--fetchRegistry=true
--eureka.instance.preferIpAddress=false
--eureka.client.serviceUrl.defaultZone=http://eureka-0.${APP_NAME}:8761/eureka/,http://eureka-1.${APP_NAME}:8761/eureka/
"
resources:
limits:
cpu: 2000m
memory: 1024Mi
requests:
cpu: 2000m
memory: 1024Mi
readinessProbe: #就绪探针
initialDelaySeconds: 20 #延迟加载时间
periodSeconds: 5 #重试时间间隔
timeoutSeconds: 10 #超时时间设置
failureThreshold: 5 #探测失败的重试次数
httpGet:
path: /actuator/health
port: 8081
livenessProbe: #存活探针
initialDelaySeconds: 60 #延迟加载时间
periodSeconds: 5 #重试时间间隔
timeoutSeconds: 5 #超时时间设置
failureThreshold: 3 #探测失败的重试次数
httpGet:
path: /actuator/health
port: 8081
所有服务创建成功,但显示以下错误消息:
Readiness probe failed: Get http://172.30.224.17:8081/actuator/health: dial tcp 172.30.224.17:8081: connect: connection refused
Back-off restarting failed container
管理端口应该与eureka服务端口相同吗?我究竟将如何实施探针服务?
答案 0 :(得分:2)
Eureka服务器是一个弹簧启动应用程序,它将启动嵌入式tomcat,并在eureka服务器的application.yml中指定端口。默认端口设置为8761。您可以将8761端口用于探针,这就是我的建议。您需要在actuator/health
处有一个休息端点,该端点返回200 Ok
,我相信默认情况下它是由弹簧执行器添加的,因此您无需自己实现。
简而言之,可以将探针中的端口从8081更改为8761。