在kubernetes中部署eureka时,我更喜欢指定关于活动性探针和就绪性探针的端口

时间:2020-02-02 05:50:20

标签: kubernetes

我正在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服务端口相同吗?我究竟将如何实施探针服务?

1 个答案:

答案 0 :(得分:2)

Eureka服务器是一个弹簧启动应用程序,它将启动嵌入式tomcat,并在eureka服务器的application.yml中指定端口。默认端口设置为8761。您可以将8761端口用于探针,这就是我的建议。您需要在actuator/health处有一个休息端点,该端点返回200 Ok,我相信默认情况下它是由弹簧执行器添加的,因此您无需自己实现。

简而言之,可以将探针中的端口从8081更改为8761。