第 7 章 已知问题
本节论述了 AMQ Broker 7.12 中已知的问题。
ENTMQBR-9187 - 在部署 CR 且消息迁移无法按预期工作时,Operator 会显示禁止的错误。
如果使用 Openshift CLI 安装 Operator,或使用带有自定义 YAML 文件的 Operator Hub,您可以将 Operator 配置为监视多个命名空间或与安装 Operator 不同的单个命名空间。在这两个配置中,部署
ActiveMQArtemisCR 时会显示以下错误:W0614 14:18:59.355936 1 reflector.go:535] k8s.io/client-go/informers/factory.go:150: failed to list *v1.StatefulSet: statefulsets.apps is forbidden: User "system:serviceaccount:amq-broker-operator-olm:amq-broker-controller-manager" cannot list resource "statefulsets" in API group "apps" in the cluster scope.代理部署已创建,并可以正常工作。但是,如果您随后缩减部署,删除的代理中的信息不会迁移到另一个代理,并会丢失。
要避免这个问题,允许 Operator 监控所有命名空间(默认命名空间),或者配置 Operator 以观察安装 Operator 的单个命名空间。
ENTMQBR-9103 - 在关闭多个使用 AMQP 的线程时,NullPointerException
当为 AMQP 信息运行多线程消费者时,代理有时会生成 WARN 级别日志消息,如下所示:
2024-05-13 18:11:46,048 WARN [io.netty.util.concurrent.AbstractEventExecutor] 一个引发异常的任务。任务: org.apache.activemq.artemis.protocol.amqp.proton.AMQPLargeMessageWriter$$Lambda$643/0x00007fa4ff5153c0@33bff98e java.lang.NullPointerException: null当客户端完成使用消息且有时由堆栈追踪附带时,会生成消息。
没有信息会丢失,消息可以被忽略。
ENTMQBR-8106 - 在更改 CR 中的 MessageMigration 后 AMQ Broker Drainer pod 无法正常工作
您无法更改正在运行的代理部署中
messageMigration属性的值。要临时解决这个问题,您必须在新的ActiveMQ ArtemisCR 中为messageMigration属性设置所需的值,并创建新的代理部署。
ENTMQBR-8166 - 带有 UseClientAuth=true 的自签名证书可防止与 Jolokia 的 Operator 通信
如果在
ActiveMQ ArtemisCR 的console部分中将useClientAuth属性设置为true,Operator 无法在代理上配置某些功能,如创建地址。在 Operator 日志中,您会看到以remote error: tls: bad certificate结尾的错误消息。
ENTMQBR-7359 - 更改为当前使用 7.10.0 Operator 的凭证 secret 处理
Operator 存储管理员用户名和密码,用于在 secret 中连接到代理。默认 secret 名称格式为 <
custom-resource-name>-credentials-secret。您可以手动创建 secret,或允许 Operator 创建 secret。如果在 7.10.0 之前的自定义资源中配置了
adminUser和adminPassword属性,Operator 会使用这些属性的值更新手动创建的 secret。从 7.10.0 开始,Operator 不再更新手动创建的 secret。因此,如果您更改了 CR 中的adminUser和adminPassword属性的值,则必须:- 使用新用户名和密码更新 secret
-
删除 secret 并允许 Operator 创建 secret。当 Operator 创建 secret 时,如果在 CR 中指定它们,它会添加
adminUser和adminPassword属性的值。如果这些属性不在 CR 中,Operator 会为 secret 生成随机凭证。
ENTMQBR-7111 - 7.10 版本的 Operator 通常会在升级过程中删除 StatefulSet
如果您要升级到 AMQ Broker Operator 7.10.0,新的 Operator 会在协调过程中自动删除每个部署的现有 StatefulSet。当 Operator 删除 StatefulSet 时,现有代理 pod 会被删除,这会导致临时代理中断。
您可以运行以下命令来手动删除 StatefulSet,并在 Operator 被删除 StatefulSet: oc delete statefulset <statefulset-name> --cascade=orphan 前删除正在运行的 pod: oc delete statefulset < statefulset-name> --cascade=orphan
在升级过程中手动删除 StatefulSet,新 Operator 可以在不删除正在运行的 pod 的情况下协调 StatefulSet。如需更多信息,请参阅在 OpenShift 上部署 AMQ Broker 中的使用 OperatorHub 升级 Operator。
ENTMQBR-5749 - 删除 OperatorHub 中可见的不受支持的 operator
仅支持 从 OperatorHub 部署 Operator 中提到的 Operator 和 Operator 频道。出于与 Operator 出版物相关的技术原因,其他 Operator 和频道在 OperatorHub 中可见,应该会被忽略。为了便于参考,以下列表显示了哪些 Operator 可见,但不支持:
- Red Hat Integration - AMQ Broker LTS - 所有频道
- Red Hat Integration - AMQ Broker - alpha、current 和 current-76
ENTMQBR-4140 - AMQ Broker Operator:如果
storage.size被不正确的指定,则安装将不可用如果您配置自定义资源(CR)实例的
storage.size属性,以指定部署持久性存储中的代理所需的持久性卷声明(PVC)大小,如果没有正确指定这个值,Operator 安装将不可用。例如,假设您将storage.size的值设置为1 (即,没有指定单元)。在这种情况下,Operator 无法使用 CR 创建代理部署。另外,即使您删除 CR 并使用正确指定storage.size部署新版本,Operator 仍无法使用此 CR 创建部署。要临时解决这个问题,首先停止 Operator。在 OpenShift Container Platform Web 控制台中,单击 Deployments。对于与 AMQ Broker Operator 对应的 Pod,点 More options 菜单(三个垂直点)。单击 Edit Pod Count,并将值设为
0。当 Operator Pod 停止后,使用storage.size创建 CR 的新版本。然后,要重启 Operator,请再次点 Edit Pod Count,并将值设为1。
ENTMQBR-4141 - AMQ Broker Operator:增加持久性卷大小需要在重新创建状态集后手动参与
如果您试图增加部署持久性存储中的代理所需的持久性卷声明(PVC)的大小,则更改不会生效,而无需进一步手动步骤。例如,假设您配置自定义资源(CR)实例的
storage.size属性,以指定 PVC 的初始大小。如果您修改了 CR 来指定storage.size的不同值,现有代理将继续使用原始 PVC 大小。即使将部署缩减为零个代理,也会发生这种情况,然后备份到原始数字。但是,如果您扩展部署的大小以添加额外的代理,则新代理将使用新的 PVC 大小。要临时解决这个问题,并确保部署中的所有代理都使用相同的 PVC 大小,使用 OpenShift Container Platform Web 控制台扩展部署使用的 PVC 大小。在控制台中,单击
。点您的部署。在右上角的 Actions 下拉菜单中,选择 Expand PVC并输入新值。