Понимание проверок работоспособности серверных служб на GKE при использовании входящего трафика

Я использую следующий код в statefulset.yml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: geth
  namespace: prod
spec:
  serviceName: geth-service
  replicas: 2
  selector:
    matchLabels:
      app: geth-node
  template:
    metadata:
      labels:
        app: geth-node
    spec:
containers:
      - name: geth-node
        image: <My image>
        imagePullPolicy: Always
        livenessProbe:
          httpGet:
              path: /
              port: 8545
          initialDelaySeconds: 20 #wait this period after staring fist time
          periodSeconds: 15  # polling interval
          timeoutSeconds: 5    # wish to receive response within this time period
        readinessProbe: 
          httpGet:
              path: /
              port: 8545
          initialDelaySeconds: 20 #wait this period after staring fist time
          periodSeconds: 15    # polling interval
          timeoutSeconds: 5 

и у меня в ingress.yml

kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: prod-ingress
  namespace: prod
  annotations:
    kubernetes.io/ingress.class: "gce"
    kubernetes.io/ingress.global-static-ip-name: "mystaticip"
spec:
  tls:
    - secretName: my-tls
      hosts: 
        - myhost.com
  rules:
    - host: myhost
      http:
        paths:
        - path: /rpc
          backend:
            serviceName: gethrpc-service
            servicePort: 80   

Мой контейнер выставляет порт 8545, поэтому я настроил зонд, как указано выше, для моего statefulset.

Когда я создаю этот набор состояний и вход, автоматически создается балансировщик нагрузки.

Я получаю две серверные службы (я думаю, два порта для двух узлов - я запускаю его на двух узлах)

Однако меня смущают следующие две проверки работоспособности, созданные для этих серверных служб.

1. Path: /healthz Port number: 30695
2. Path: / Port number: 30190   
  1. Я не понимаю, почему эти проверки работоспособности различаются для разных узлов.
  2. Я настроил путь как /, поэтому у обоих IMO должен быть путь /

PS: Я использую кластер с двумя узлами и 2 модуля, по одному на каждом узле.


person kosta    schedule 16.08.2018    source источник


Ответы (1)


Путь [/ healthz] используется для Backend по умолчанию для GLBC, посмотрите здесь. Как вы знаете, серверная часть по умолчанию - это служба, которая обрабатывает все URL-пути и размещает, что контроллер GLBC не понимает.

Путь [/], скорее всего, для вашей службы.

person Alioua    schedule 16.08.2018
comment
Спасибо за ответ, но я не понимаю, почему есть проверки работоспособности для /healthz через порт 30695, а не через 30190 - person kosta; 17.08.2018
comment
по умолчанию путь для серверной части по умолчанию - / healthz, и для каждого отдельного пути существует свой порт, и когда вы предоставляете услугу извне с помощью балансировщика нагрузки облачного провайдера, то также будет создан NodePort. Мастер Kubernetes выделит порт из диапазона, указанного флагом --service-node-port-range (по умолчанию: 30000-32767) - person Alioua; 17.08.2018