GKE Ingress показывает нездоровые серверные службы - PullRequest
0 голосов
/ 05 августа 2020

У меня есть кластер GKE с 4 узлами в группе экземпляров. Я развернул Ingress и несколько модулей (только 1 реплика каждого модуля, поэтому они находятся только на 1 узле). На консоли Google (страница сведений об Ingress) я замечаю, что все серверные службы остаются Unhealhy, хотя проверки работоспособности запущенных модулей в порядке и мое приложение работает. Насколько я понимаю, это говорит о том, что это нездорово, потому что из 4 узлов только 1 узел запускает экземпляр данного модуля (в деталях внутренней службы указано «1 из 4 экземпляров исправен»). Прав ли я и стоит ли мне беспокоиться и пытаться это исправить? Немного странно принимать состояние Неработоспособности, когда приложение работает ...

Изменить: после дальнейшего исследования, до 2 узлов и активации журналов проверки работоспособности, я вижу, что состояние серверной службы похоже на статус последней выполненной проверки работоспособности. Таким образом, если он последний раз проверяет узел, на котором размещен модуль, он исправен, в противном случае - неисправен.

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    ingress.gcp.kubernetes.io/pre-shared-cert: mcrt-dc729887-5c67-4388-9327-e4f76baf9eaf
    ingress.kubernetes.io/backends: '{"k8s-be-30301--503461913abc33d7":"UNHEALTHY","k8s-be-31206--503461913abc33d7":"HEALTHY","k8s-be-31253--503461913abc33d7":"HEALTHY","k8s-be-31267--503461913abc33d7":"HEALTHY","k8s-be-31432--503461913abc33d7":"UNHEALTHY","k8s-be-32238--503461913abc33d7":"HEALTHY","k8s-be-32577--503461913abc33d7":"UNHEALTHY","k8s-be-32601--503461913abc33d7":"UNHEALTHY"}'
    ingress.kubernetes.io/https-forwarding-rule: k8s2-fs-sfdowd2x-city-arlas-cloud-8cfrc00p
    ingress.kubernetes.io/https-target-proxy: k8s2-ts-sfdowd2x-city-arlas-cloud-8cfrc00p
    ingress.kubernetes.io/ssl-cert: mcrt-dc729887-5c67-4388-9327-e4f76baf9eaf
    ingress.kubernetes.io/url-map: k8s2-um-sfdowd2x-city-arlas-cloud-8cfrc00p
    kubernetes.io/ingress.allow-http: "false"
    kubernetes.io/ingress.global-static-ip-name: city
    networking.gke.io/managed-certificates: arlas-cloud
  creationTimestamp: "2020-08-06T08:25:18Z"
  finalizers:
  - networking.gke.io/ingress-finalizer-V2
  generation: 1
  labels:
    app.kubernetes.io/instance: arlas-cloud
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: arlas-cloud
    helm.sh/chart: arlas-cloud-0.4.58
  name: arlas-cloud
  namespace: city
  resourceVersion: "37878"
  selfLink: /apis/extensions/v1beta1/namespaces/city/ingresses/arlas-cloud
  uid: 751f78cf-2344-46e3-b87e-04d6d903acd5
spec:
  rules:
  - http:
      paths:
      - backend:
          serviceName: arlas-cloud-server
          servicePort: 9999
        path: /arlas/server
      - backend:
          serviceName: arlas-cloud-server
          servicePort: 9999
        path: /arlas/server/*
      - backend:
          serviceName: arlas-cloud-persistence
          servicePort: 9997
        path: /arlas/persistence
      - backend:
          serviceName: arlas-cloud-persistence
          servicePort: 9997
        path: /arlas/persistence/*
      - backend:
          serviceName: arlas-cloud-city-server
          servicePort: 9997
        path: /arlas/city-server
      - backend:
          serviceName: arlas-cloud-city-server
          servicePort: 9997
        path: /arlas/city-server/*
      - backend:
          serviceName: arlas-cloud-city-wui
          servicePort: 80
        path: /arlas/city-wui
      - backend:
          serviceName: arlas-cloud-city-wui
          servicePort: 80
        path: /arlas/city-wui/*
      - backend:
          serviceName: arlas-cloud-wui4city
          servicePort: 80
        path: /arlas/wui/city
      - backend:
          serviceName: arlas-cloud-wui4city
          servicePort: 80
        path: /arlas/wui/city/*
      - backend:
          serviceName: arlas-cloud-collection-server
          servicePort: 9995
        path: /arlas/collection-server
      - backend:
          serviceName: arlas-cloud-collection-server
          servicePort: 9995
        path: /arlas/collection-server/*
      - backend:
          serviceName: arlas-cloud-home-page
          servicePort: 80
        path: /*
status:
  loadBalancer:
    ingress:
    - ip: xx.xx.xx.xx

1 Ответ

0 голосов
/ 05 августа 2020

Пожалуйста, проверьте ваш yaml-файл на предмет вашей службы. Если он показывает externalTrafficPolicy: local , то это ожидаемое поведение.

Local означает, что трафик c всегда будет go для модуля на том же узле, а все остальное будет отброшено. Таким образом, если в вашем развертывании имеется только одна обслуживаемая реплика, у вас будет только один работоспособный экземпляр.

Вы можете легко проверить эту теорию, масштабировать до 2 реплик и наблюдать за поведением. Я предвижу 1 работоспособный экземпляр, если 2-я реплика приземляется на том же узле, что и первая реплика, и 2/4 работоспособного, если 2-я реплика приземляется на другом узле. Дай мне знать.

...