Как узнать, какой узел/модуль обслужил запрос Kubernetes Ingress?

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

Единственный способ, который я знаю, — это открыть журналы на всех модулях, выполнить мой запрос и найти модуль, у которого есть мой запрос в журнале доступа. Но это сложно и исключает ошибки, особенно в продуктивных приложениях с запросами от других пользователей.

Я ищу что-то вроде заголовка HTTP-ответа, например:

X-Kubernetes-Pod: mypod-abcdef-23874
X-Kubernetes-Node: kubw02

person Daniel    schedule 26.03.2019    source источник


Ответы (1)


Насколько я знаю, такой функции из коробки нет.

Самый простой способ, который я могу придумать, - это добавить эту информацию в виде заголовков из вашего API.

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

Было бы что-то вроде этого:

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 MY_POD_NAMESPACE;
          printenv MY_POD_IP MY_POD_SERVICE_ACCOUNT;
          sleep 10;
        done;
      env:
        - name: MY_NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        - name: MY_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: MY_POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: MY_POD_IP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
        - name: MY_POD_SERVICE_ACCOUNT
          valueFrom:
            fieldRef:
              fieldPath: spec.serviceAccountName
  restartPolicy: Never

А из API вы получаете информацию и вставляете в шапку.

person Diego Mendes    schedule 26.03.2019