Как использовать IP хоста из контейнера? - PullRequest
0 голосов
/ 30 августа 2018

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

Могу ли я иметь аналогичную настройку с Kubernetes и позволить контейнеру использовать IP хоста?

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

Ответы [ 3 ]

0 голосов
/ 31 августа 2018

Я постараюсь дать этому шанс. Я надеюсь, что понимаю ваш вопрос. Вам нужно только подключиться к внешнему IP-адресу из контейнера / контейнера.

Мы реализовали это, создав службу kubernetes без селектора.


kind: Service 
apiVersion: v1 
metadata:
  name: your-external-system
    

Затем следует создание объекта конечной точки с тем же именем, что и у вашей службы.


kind: Endpoints 
apiVersion: v1 
metadata: 
  name: your-external-system
  subsets: 
    - addresses: 
       - ip: 192.168.0.1 
       ports: 
       - port: 3306
    
Наконец, в вашем модуле вы можете просто обратиться к названию сервиса в этом случае (your-external-system)
0 голосов
/ 31 августа 2018

hostNetwork=true в спецификации модуля предоставляет хост-сети модуль, и контейнер может получить доступ к сетевым интерфейсам:

apiVersion: v1
kind: Pod
metadata:
  name: lookup
spec:
  hostNetwork: true
  containers:
    - name: lookup
      image: sbusso/lookup_ips:latest
      ports:
      - containerPort: 9000

Чтобы проверить это: kubectl port-forward lookup 9000, а затем перейдите к http://127.0.0.1:9000/ и получите сведения о сетевых интерфейсах:

lo
- 127.0.0.1/8
- ::1/128
eth0
- 10.0.2.15/24
- fe80::a00:27ff:fea1:6e61/64
eth1
- 192.168.99.101/24
- fe80::a00:27ff:fe77:d179/64

Обратите внимание, что этот вариант не рекомендуется в передовой практике в Кубернетесе: https://kubernetes.io/docs/concepts/configuration/overview/#services

0 голосов
/ 30 августа 2018

Как я писал в Выбор IP-адреса выхода :

Одна из вещей, которая может помочь вам решить это Istio Egress Gateway, поэтому я советую вам изучить его.

В противном случае он все еще зависит от конкретной платформы и способа развертывания кластера. Например, в AWS вы можете убедиться, что ваш исходящий трафик всегда уходит с заранее определенного, известного набора IP-адресов, используя экземпляры с Elastic IP-адресами, назначенными для пересылки вашего трафика (будь то обычные шлюзы EC2 или AWS NAT). Даже с вышеприведенным Egress вам нужен какой-то способ определения фиксированного IP-адреса для этого, поэтому AWS ElasticIP (или его эквивалент) является обязательным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...