Контейнер в открытом доступе другой контейнер в той же капсуле Kubernetes - PullRequest
0 голосов
/ 02 июня 2019

В стручке Кубернетеса у меня есть:

  • busybox контейнер, работающий в dind контейнере
  • fluentd контейнер

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

dind access to another container

1 Ответ

1 голос
/ 07 июня 2019

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

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

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

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

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

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

$ 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.

Надеюсь, это поможет.

...