首页 > 解决方案 > Azure 容器实例显然在停止或删除后继续运行

问题描述

我们有一个使用 Azure ServiceBus 的基于微服务的应用程序。我们将其中一项服务(传奇管理器)部署为 .Net Core 控制台应用程序在 docker 容器 (Linux) 中。我们使用 docker-compose 并将一组 2 个容器(包括控制台应用程序)部署到 Azure 容器实例中。

我们使用 MassTransit 与 Azure ServiceBus 一起工作。

控制台应用程序(传奇管理器)通过 MassTransit.BusControlExtensions.Start() 方法启动服务总线。

在这一点上,控制台应用程序(传奇管理器)或多或少已经准备就绪。

旁注:有问题的应用程序(传奇经理)运行自动状态机

现在,如果我们使用 saga 管理器停止删除容器,然后重新启动它 - 它会停止接收总线消息。

似乎每次重新启动都会创建一个新的传奇管理器实例(线程?) - 而旧实例(线程?)以某种方式持续存在

即使我们在 Azure 上完全删除了容器实例资源——我们仍然可以观察到总线消息被某些东西拾取......

删除容器组本身后,容器的应用程序仍然存在

有没有办法彻底杀死分离的实例/线程?

有人熟悉 Azure容器实例的这种行为吗?

PS 在所描述的场景中,停止/删除操作总是成功的

PS2:这是使用az container create命令部署有问题的容器组的 yaml 文件:

apiVersion: 2018-10-01
location: westeurope
name: #{groupName}#
properties:
  containers:
  - name: saga-aci
    properties:
      image: #{acrLoginServer}#/sagaazure:latest
      resources:
        requests:
          cpu: 1
          memoryInGb: 1.5
      ports:
      - port: 80
      - port: 443
      - port: 9350
  - name: proxymanager-aci
    properties:
      image: #{acrLoginServer}#/proxymanager:latest
      resources:
        requests:
          cpu: 1
          memoryInGb: 1.5
      ports:
      - port: 22999
      - port: 24000
  osType: Linux
  ipAddress:
    type: Public
    ports:
    - protocol: tcp
      port: '80'
    #- protocol: tcp
      #port: '8080'
    - protocol: tcp
      port: '22999'
    - protocol: tcp
      port: '24000'
    - protocol: tcp
      port: '443'
    - protocol: tcp
      port: '9350'
  imageRegistryCredentials:
    - server: #{acrLoginServer}#
      username: #{acrName}#
      password: #{acrPassword}#
tags: null
type: Microsoft.ContainerInstance/containerGroups

也许这是一个重星政策问题?

标签: azuredockerazureservicebusazure-container-instancesautomatonymous

解决方案


Azure Container Instance的操作,有几点需要注意。

停止动作,如果你停止容器组,那么它将终止并回收组中的所有容器,并且不保留容器的状态。如果容器组已经终止,则无效。

启动操作,如果您从停止状态启动容器组,那么将有一个具有相同容器配置的新部署。如果图像更新,它将拉新的。启动动作将启动整个容器组,但不能启动其中的特殊容器组。

对于删除操作,如果您删除容器组,我认为容器组内的应用程序不会仍然存在。该操作将需要很短的时间。但最后,容器组将被完全删除。

您可以在Azure 容器实例操作中查看更多详细信息。我对 Azure ServiceBus 没有任何经验,以上仅针对 Azure 容器实例。如果您还有任何问题,请告诉我。


推荐阅读