Контейнер в открытом доступе другой контейнер в той же капсуле Kubernetes

В стручке Kubernetes у меня есть:

  • busybox контейнер работает в dind контейнер
  • fluentd контейнер

Я понимаю, если dind хочет получить доступ fluentd, он должен просто подключиться к localhost:9880. Но что, если busybox хочет получить доступ fluentd как показано на рисунке ниже. Какой адрес мне следует использовать?

0 ответов

Эти советы могут вам помочь:

1. Первый подход

Изнутри контейнера docker:latest, откуда вы пытались получить к нему доступ изначально, он будет доступен на любом имени хоста, установленном для контейнера docker:dind. В этом случае вы использовали --name dind, поэтому curl dind:busybox_port предоставит вам стандарт.

И затем вы можете из контейнера docker:dind (busybox) подключиться к fluentd, он будет доступен на localhost:9880.

2. Второй подход

Другой подход - EXPOSE [/...], и в этом случае мы предполагаем, что busyboox и fluentd находятся в разных сетях. Вы также можете указать это в команде запуска докера, например:

$ docker run --expose=1234 busybox

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

Опубликуйте порты и сопоставьте их с хостом

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

$ docker run -p 80:80/tcp -p 80:80/udp busybox

А затем подключитесь из busybox к fluentd, используя localhost:9880

Вы можете найти дополнительную информацию здесь: docker-in-docker.

Я надеюсь, что это помогает.

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