Определите, какой узел GKE обслуживает запрос клиента - PullRequest
2 голосов
/ 14 апреля 2020

Я развернул приложение в Google Kubernetes Engine. Я хотел бы определить, какой клиентский запрос является сервисом, каким узлом / модулем в GKE. Есть ли способ сопоставить запрос клиента с модулем / узлом, которым он обслуживался?

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

Я думаю, Downward API - это то, что вам нужно. Это позволяет вам выставить Pod и node info для работающей container. Ваша заявка может просто echo содержание определенного env variables, содержащего необходимую информацию. Таким образом, вы можете увидеть, какой Pod и запланированный на каком узле обрабатывает конкретный запрос.

Несколько слов о том, что это из документации kubernetes :

Существует два способа предоставления полей Pod и Container работающему контейнеру:

Вместе эти два способа отображения полей Pod и Container называются Downward API .

Я бы порекомендовал вам поближе взглянуть на Предоставление информации о контейнерах контейнерам через переменные среды . В следующем примере Pod предоставляет container его имя, а также имя узла:

apiVersion: v1
kind: Pod
metadata:
  name: dapi-envars-fieldref
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
      command: [ "sh", "-c"]
      args:
      - while true; do
          echo -en '\n';
          printenv MY_NODE_NAME MY_POD_NAME;
          sleep 10;
        done;
      env:
        - name: MY_NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        - name: MY_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
  restartPolicy: Never

Это всего лишь пример, который, я надеюсь, отвечает вашим конкретным требованиям, но имейте в виду, что вы можете выставить таким образом много другой актуальной информации. Кратко рассмотрим список возможностей нисходящего API .

0 голосов
/ 15 апреля 2020

Ответ на ваш вопрос в значительной степени зависит от количества средств мониторинга и инструментов, которыми вы располагаете.
Наиболее распространенный способ go об этом - добавить клиент Prometheus в код, выполняемый на ваших модулях, и используйте его для написания метрик, содержащих метки, которые могут идентифицировать запросы клиентов, которые вас интересуют.

Как только Прометей очистит ваши метрики, они будут обогащены отправляющим их узлом / модулем, и вы сможете получить данные, которые вы после.

...