Коммуникация между контейнерами в 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. Пробовал подставлять айпи адрес вместо названия контейнера, но это не помогло. Нигде также не могу найти пример, в котором бы была подобная ситуация когда один контейнер должен связаться с другим и что должно быть указано в качестве адреса.


Ответы (0 шт):