【问题标题】:Migrate docker-compose to Kubernetes将 docker-compose 迁移到 Kubernetes
【发布时间】:2019-12-18 05:16:04
【问题描述】:

我正在尝试在 K8s 上部署 free5GC (cluster version)。 这个软件的问题是有些服务在启动之前必须知道其他服务IP。我在 docker-compose 中解决了这个问题,在每个 docker 容器内执行一个脚本,并使用其他服务 IP 作为参数。 这是我的 docker-compose.yaml:

version: '3'

networks:
    testing_net:
        ipam:
            driver: default
            config:
                - subnet: 172.28.0.0/16

services:
  mongo:
    container_name: mongo
    image: mongo
    networks: 
      testing_net:
        ipv4_address: ${mongo_ip}

  webui:
    container_name: webui
    image: j0lama/free5gc-webui
    depends_on:
      - mongo
    ports:
      - '80:3000'
    extra_hosts:
      - "mongo:${mongo_ip}"
    networks: 
      testing_net:
        ipv4_address: ${webui_ip}

  hss:
    container_name: hss
    command: bash -c "./hss_setup.sh ${mongo_ip} ${hss_ip} ${amf_ip}"
    image: j0lama/free5gc-hss
    depends_on:
      - mongo
    networks: 
      testing_net:
        ipv4_address: ${hss_ip}

  amf:
    container_name: amf
    command: bash -c "./amf_setup.sh ${mongo_ip} ${hss_ip} ${amf_ip} ${smf_ip}"
    image: j0lama/free5gc-amf
    depends_on:
      - mongo
      - hss
    ports:
      - '36412:36412'
    networks: 
      testing_net:
        ipv4_address: ${amf_ip}

  smf:
    container_name: smf
    command: bash -c "./smf_setup.sh ${smf_ip} ${upf_ip} ${pcrf_ip}"
    image: j0lama/free5gc-smf
    depends_on:
      - mongo
      - hss
      - amf
    networks: 
      testing_net:
        ipv4_address: ${smf_ip}

  pcrf:
    container_name: pcrf
    command: bash -c "./pcrf_setup.sh ${mongo_ip} ${smf_ip} ${pcrf_ip}"
    image: j0lama/free5gc-pcrf
    depends_on:
      - mongo
      - hss
      - amf
      - smf
    networks: 
      testing_net:
        ipv4_address: ${pcrf_ip}

  upf:
    container_name: upf
    command: bash -c "./upf_setup.sh ${upf_ip}"
    image: j0lama/free5gc-upf
    depends_on:
      - mongo
      - hss
      - amf
      - smf
      - pcrf
    networks: 
      testing_net:
        ipv4_address: ${upf_ip}

有了这个,我可以正确设置集群的所有组件。 我已经尝试过 kompose 实用程序,但不起作用。

对 Kubernetes 有什么建议或替代方案吗?

感谢您的帮助。

【问题讨论】:

  • 您的工具是否进行 DNS 查找? Docker Compose 和 Kubernetes 都提供内部 DNS 系统,您可以使用这些系统来引用其他容器,而无需手动指定 IP 地址。

标签: docker kubernetes docker-compose


【解决方案1】:

您可以使用 Kubernetes 服务公开每个部署。当您这样做时,每个公开的服务集群 IP 都将作为环境变量可供容器使用。

例如:部署 hss,并使用名为 hss 的服务公开 hss 端口。然后,任何需要连接到hss 的容器都可以使用环境变量HSS_SERVICE_HOST 来获取该服务的IP 地址。还有更多的环境变量可以为您提供服务端口号或其他格式的服务地址。

【讨论】:

    猜你喜欢
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2021-04-20
    • 1970-01-01
    • 2020-07-05
    • 2018-11-15
    • 2020-04-27
    相关资源
    最近更新 更多