Контейнер Kubernetes получает внешний IP-адрес узла

для deamonSet мне нужно знать внешний IP-адрес узла, на котором работает модуль/контейнер, как ENV, поскольку требуется отправить его в дейтаграмме. Унфо. содержит ли status.hostIP только локальный IP-адрес узла.

Заранее спасибо.

В средах, в которых я работал, лучшая практика заключалась в том, что узлы находились в частной среде и были доступны только через такие вещи, как службы типа LoadBalancer; узел обычно не имеет внешнего IP-адреса.

David Maze 01.06.2024 12:40

Если вам разрешен доступ к Службе метаданных (она может быть скрыта с помощью GKE), вы можете получить доступ к внешнему IP-адресу виртуальной машины: curl -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/network-i‌​nterfaces/0/access-c‌​onfigs/0/external-ip (или к какой-либо его перестановке).

DazWilkin 01.06.2024 19:14
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
0
2
92
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если существуют внешние IP-адреса , которые направляются к одному или нескольким узлам кластера, службы Kubernetes могут быть доступны по этим внешним IP-адресам. Трафик, поступающий в кластер с внешним IP-адресом (в качестве IP-адреса назначения) через порт службы, будет перенаправляться на одну из конечных точек службы. внешние IP-адреса не управляются Kubernetes и за них отвечает администратор кластера.

Для приложения, если вы захотите предоставить Службу на внешний IP-адрес, доступный за пределами вашего кластера. Типы служб Kubernetes позволяют вам указать, какой тип службы вам нужен. Вы можете использовать тип Nodeport или тип Load Balancer или другие типы, чтобы предоставить доступ к вашему сервису.

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

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

import os
from kubernetes import client, config, watch

# Configure Kubernetes API client
try:
    config.load_kube_config()  # Use kubeconfig file if available
except Exception:
    config.load_incluster_config()  # Use in-cluster config if running inside a cluster

def get_public_ip(node):
    for address in node.status.addresses:
        if address.type == 'ExternalIP':
            return address.address
    return None

def get_all_nodes():
    return v1.list_node().items

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