azure - 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
也许这是一个重星政策问题?
解决方案
Azure Container Instance的操作,有几点需要注意。
停止动作,如果你停止容器组,那么它将终止并回收组中的所有容器,并且不保留容器的状态。如果容器组已经终止,则无效。
启动操作,如果您从停止状态启动容器组,那么将有一个具有相同容器配置的新部署。如果图像更新,它将拉新的。启动动作将启动整个容器组,但不能启动其中的特殊容器组。
对于删除操作,如果您删除容器组,我认为容器组内的应用程序不会仍然存在。该操作将需要很短的时间。但最后,容器组将被完全删除。
您可以在Azure 容器实例操作中查看更多详细信息。我对 Azure ServiceBus 没有任何经验,以上仅针对 Azure 容器实例。如果您还有任何问题,请告诉我。
推荐阅读
- javascript - 获取表单数据到 javascript webhook
- reactjs - Vue.config.js - 创建一个 main.js 文件并从 /static/ 提供它
- android - android中的rasa聊天机器人响应错误
- javascript - 使用 Ajax 处理 json HttpResponse
- windows - 使用 EXTRAC32 命令批量闪烁窗口提取警报
- c++ - 线程堆栈大小限制
- javascript - 如何以编程方式清除 Firebase 实时数据库
- google-sheets - 是否有可能由多行组成的中央标题?
- python - 如何使用 QSqlTableModel 为 Qtableview 创建过滤器行。?
- python - /usr/local/bin/pip:错误的解释器:/usr/local/opt/python/bin/python3.7