Не удается настроить проверку работоспособности центра мониторинга hazelcast (другой порт) на GKE

Я новичок в вещах K8s, и теперь столкнулся с проблемой, что я не могу настроить проверку работоспособности на входе/балансировщике нагрузки Google Cloud. В man-центре hazelcast есть проверка работоспособности на порту 8081, но рабочий порт — 8080. Когда я развертываю приложение в GKE, проверки работоспособности выполняются на рабочем nodePort, который ссылается на рабочий порт (8080). В документации здесь и здесь сказано, что мне нужно добавить пользовательский BackendConfig и настроить в сервисе проверку работоспособности nodePort, которая ссылается на порт проверки работоспособности приложения (8081). Я так и сделал, но это не отменяет проверку работоспособности по умолчанию на рабочем порту. Так что это не удается.

Это мои файлы yaml:

hazelcast-mc-backend-config.yaml

apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
  name: hazelcast-mc-backend-config
spec:
  healthCheck:
    checkIntervalSec: 60
    timeoutSec: 60
    healthyThreshold: 1
    unhealthyThreshold: 10
    type: HTTP2
    requestPath: /hazelcast-mc/health
    port: 31111
  timeoutSec: 86400
  connectionDraining:
    drainingTimeoutSec: 30
  customRequestHeaders:
    headers:
      - "X-Client-Region:{client_region}"
      - "X-Client-City:{client_city}"
      - "X-Origin-Request-Header:{origin_request_header}"
      - "X-TLS-Version:{tls_version}"

hazelcast-mc-service.yaml

apiVersion: v1
kind: Service
metadata:
  annotations:
    cloud.google.com/backend-config: '{"ports": {"8081":"hazelcast-mc-backend-config"}}'
    cloud.google.com/app-protocols: '{"hazelcast-management-center":"HTTP2"}'
  name: hazelcast-management-center
spec:
  ports:
    - name: hazelcast-management-center
      port: 443
      targetPort: 8080
    - name: hazelcast-management-center-health
      port: 8081
      targetPort: 8081
      nodePort: 31111
  selector:
    app: hazelcast-management-center
    tier: backend
  type: NodePort

hazelcast-mc-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hazelcast-management-center
  labels:
    app: hazelcast-management-center
    tier: backend
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hazelcast-management-center
  strategy:
    rollingUpdate:
      maxSurge: 3
      maxUnavailable: 50%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: hazelcast-management-center
        tier: backend
    spec:
      containers:
        - name: hazelcast-management-center
          image: hazelcast/management-center:5.1.3
          imagePullPolicy: "Always"
          securityContext:
            runAsUser: 2  # non-root user
            allowPrivilegeEscalation: false
          resources:
            requests:
              memory: 128Mi
              cpu: 20m
            limits:
              memory: 256Mi
              cpu: 200m
          env:
            - name: MC_ADMIN_USER
              value: admin
            - name: MC_ADMIN_PASSWORD
              value: random
            - name: MC_CONTEXT_PATH
              value: /hazelcast-mc
            - name: MC_HEALTH_CHECK_ENABLE
              value: "true"
          ports:
            - name: mancenter
              containerPort: 8080
            - name: health
              containerPort: 8081
          livenessProbe:
            httpGet:
              path: /hazelcast-mc/health
              port: 8081
            initialDelaySeconds: 45
            periodSeconds: 10
            timeoutSeconds: 5
            successThreshold: 1
            failureThreshold: 10
          readinessProbe:
            httpGet:
              path: /hazelcast-mc/health
              port: 8081
            initialDelaySeconds: 45
            periodSeconds: 10
            timeoutSeconds: 1
            successThreshold: 1
            failureThreshold: 3

Что я сделал не так ?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
14
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема была решена путем настройки Backendconfig в качестве конфигурации по умолчанию для службы. Проверка работоспособности для внешнего балансировщика нагрузки использует nodePort, поэтому мне пришлось указать его.

apiVersion: v1
kind: Service
metadata:
  annotations:
    cloud.google.com/backend-config: '{"default": "hazelcast-mc-backend-config"}'
  name: hazelcast-management-center
spec:
  ports:
    - name: hazelcast-management-center
      port: 80
      targetPort: 8080
    - name: hazelcast-management-health
      port: 8081
      targetPort: 8081
      nodePort: 31111
  selector:
    app: hazelcast-management-center
    tier: backend
  type: NodePort

Другие вопросы по теме