Коммуникация между контейнерами в Azure ACI
Пытаюсь запустить контейнеры, которые работают в докере на локале в azure, но так и не смог разобраться каким образом они коммуницируют между собой и что является эквивалентом network в докере. В документации вроде бы написано, что автоматически создается внутренняя приватная сеть а к контейнерам можно обращаться по имени, что я собственно и пытаюсь сделать, но получаю ошибку. Я пробую запускать два контейнера zookeeper который работает и kafka который пытается к нему подключиться и падает с ошибками. Вот файл моей конфигруации
apiVersion: '2021-10-01'
location: westeurope
name: group
properties:
containers:
- name: zookeeper
properties:
image: wurstmeister/zookeeper
ports:
- port: 2181
resources:
requests:
cpu: 1.0
memoryInGB: 1.0
- name: kafka
properties:
image: wurstmeister/kafka
ports:
- port: 9092
resources:
requests:
cpu: 1.0
memoryInGB: 1.0
environmentVariables:
- name: KAFKA_ADVERTISED_HOST_NAME
value: kafka
- name: KAFKA_ADVERTISED_PORT
value: '9092'
- name: KAFKA_ZOOKEEPER_CONNECT
value: zookeeper:2181
- name: KAFKA_AUTO_CREATE_TOPICS_ENABLE
value: 'false'
osType: Linux
restartPolicy: Always
ipAddress:
dnsNameLabel: string
type: Public
ports:
- protocol: tcp
port: 2181
- protocol: tcp
port: 9092
tags: null
В логах кафки можно наблюдать следующее:
[2023-06-23 12:28:39,218] ERROR Unable to resolve address: zookeeper:2181 (org.apache.zookeeper.client.StaticHostProvider)
java.net.UnknownHostException: zookeeper
at java.base/java.net.InetAddress$CachedAddresses.get(Unknown Source)
at java.base/java.net.InetAddress.getAllByName0(Unknown Source)
at java.base/java.net.InetAddress.getAllByName(Unknown Source)
at java.base/java.net.InetAddress.getAllByName(Unknown Source)
at org.apache.zookeeper.client.StaticHostProvider$1.getAllByName(StaticHostProvider.java:92)
at org.apache.zookeeper.client.StaticHostProvider.resolve(StaticHostProvider.java:147)
at org.apache.zookeeper.client.StaticHostProvider.next(StaticHostProvider.java:375)
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1137)
[2023-06-23 12:28:39,220] WARN Session 0x0 for server zookeeper:2181, unexpected error, closing socket connection and attempting reconnect (org.apache.zookeeper.ClientCnxn)
java.lang.IllegalArgumentException: Unable to canonicalize address zookeeper:2181 because it's not resolvable
at org.apache.zookeeper.SaslServerPrincipal.getServerPrincipal(SaslServerPrincipal.java:71)
at org.apache.zookeeper.SaslServerPrincipal.getServerPrincipal(SaslServerPrincipal.java:39)
at org.apache.zookeeper.ClientCnxn$SendThread.startConnect(ClientCnxn.java:1087)
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1139)
Кажется также встречалась ошибка из за названия хоста в кафке, переменная KAFKA_ADVERTISED_HOST_NAME. Пробовал подставлять айпи адрес вместо названия контейнера, но это не помогло. Нигде также не могу найти пример, в котором бы была подобная ситуация когда один контейнер должен связаться с другим и что должно быть указано в качестве адреса.