第 12 章 管理 AMQ 流
本章论述了维护 AMQ 流部署的任务。
12.1. 使用自定义资源 复制链接链接已复制到粘贴板!
您可以使用 oc 命令来检索信息,并对 AMQ Streams 自定义资源执行其他操作。
通过将 oc 与自定义资源的 status 子资源一起使用,您可以获取有关资源的信息。
12.1.1. 对自定义资源执行 oc 操作 复制链接链接已复制到粘贴板!
使用 get、describe、edit 或 delete 等 oc 命令对资源类型执行操作。例如,oc get kafkatopics 检索所有 Kafka 主题的列表,oc get kafkas 检索 所有部署的 Kafka 集群。
引用资源类型时,您可以同时使用单数和复数名称:oc get kafkas 的结果与 oc get kafka 相同。
您还可以使用资源的 短名称。在管理 AMQ Streams 时,学习短名称可节省您时间。Kafka 的短名称为 k,因此您也可以运行 oc get k 以 列出所有 Kafka 集群。
oc get k NAME DESIRED KAFKA REPLICAS DESIRED ZK REPLICAS my-cluster 3 3
oc get k
NAME DESIRED KAFKA REPLICAS DESIRED ZK REPLICAS
my-cluster 3 3
| AMQ Streams 资源 | 长名称 | 短名称 |
|---|---|---|
| kafka | kafka | k |
| kafka 主题 | kafkatopic | kt |
| Kafka 用户 | kafkauser | ku |
| Kafka Connect | kafkaconnect | kc |
| Kafka Connect S2I | kafkaconnects2i | kcs2i |
| Kafka Connector | kafkaconnector | kctr |
| Kafka Mirror Maker | kafkamirrormaker | kMM |
| Kafka Mirror Maker 2 | kafkamirrormaker2 | kmm2 |
| Kafka Bridge | kafkabridge | kb |
| kafka 重新平衡 | kafkarebalance | kR |
12.1.1.1. 资源类型 复制链接链接已复制到粘贴板!
oc 命令还可以使用自定义资源的类别。
所有 AMQ Streams 自定义资源都属于 category strimzi,因此您可以使用 strimzi 来通过一个命令获取所有 AMQ Streams 资源。
例如,运行 oc get strimzi 会列出给定命名空间中的所有 AMQ Streams 自定义资源。
oc get strimzi -o name 命令返回所有资源类型和资源名称。o name 选项以 type/name 格式获取输出
oc get strimzi -o name kafka.kafka.strimzi.io/my-cluster kafkatopic.kafka.strimzi.io/kafka-apps kafkauser.kafka.strimzi.io/my-user
oc get strimzi -o name
kafka.kafka.strimzi.io/my-cluster
kafkatopic.kafka.strimzi.io/kafka-apps
kafkauser.kafka.strimzi.io/my-user
您可以将这一 strimzi 命令与其他命令相结合。例如,您可以将其传递到 oc delete 命令以删除单个命令中的所有资源。
oc delete $(oc get strimzi -o name) kafka.kafka.strimzi.io "my-cluster" deleted kafkatopic.kafka.strimzi.io "kafka-apps" deleted kafkauser.kafka.strimzi.io "my-user" deleted
oc delete $(oc get strimzi -o name)
kafka.kafka.strimzi.io "my-cluster" deleted
kafkatopic.kafka.strimzi.io "kafka-apps" deleted
kafkauser.kafka.strimzi.io "my-user" deleted
在单个操作中删除所有资源可能很有用,例如测试新 AMQ Streams 功能时。
12.1.1.2. 查询子资源的状态 复制链接链接已复制到粘贴板!
您也可以传递给 -o 选项的其他值。例如,通过使用 -o yaml,您可以获取 YAML 格式的输出。usng -o json 将以 JSON 形式返回。
您可以查看 oc get --help 中的所有选项。
其中一个最有用的选项是 JSONPath 支持,它允许您传递 JSONPath 表达式来查询 Kubernetes API。JSONPath 表达式可以提取或导航任何资源的特定部分。
例如,您可以使用 JSONPath 表达式 {.status.listeners[?(@.type=="tls")].bootstrapServers} 从 Kafka 自定义资源的状态获取 bootstrap 地址,并在 Kafka 客户端中使用它。
此处,命令找到 tls 侦听器的 bootstrapServers 值。
oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.type=="tls")].bootstrapServers}{"\n"}'
my-cluster-kafka-bootstrap.myproject.svc:9093
oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.type=="tls")].bootstrapServers}{"\n"}'
my-cluster-kafka-bootstrap.myproject.svc:9093
通过将类型条件更改为 @.type=="external" 或 @.type=="plain",您也可以获取其他 Kafka 侦听器的地址。
oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.type=="external")].bootstrapServers}{"\n"}'
192.168.1.247:9094
oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.type=="external")].bootstrapServers}{"\n"}'
192.168.1.247:9094
您可以使用 jsonpath 从任何自定义资源中提取任何其他属性或属性组。
12.1.2. AMQ Streams 自定义资源状态信息 复制链接链接已复制到粘贴板!
几个资源具有 status 属性,如下表中所述。
| AMQ Streams 资源 | 架构参考 | 在… 上发布状态信息 |
|---|---|---|
|
| Kafka 集群。 | |
|
| Kafka Connect 集群(如果已部署)。 | |
|
| 带有 Source-to-Image 支持的 Kafka Connect 集群(如果已部署)。 | |
|
|
| |
|
| Kafka MirrorMaker 工具(如果已部署)。 | |
|
| Kafka 集群中的主题。 | |
|
| Kafka 集群中的用户。 | |
|
| AMQ Streams Kafka Bridge(如果已部署)。 |
资源的 status 属性提供资源的信息:
-
当前状态,在
status.conditions属性中 -
最后观察到的生成,在
status.observedGeneration属性中
status 属性也提供特定于资源的信息。例如:
-
KafkaConnectStatus为 Kafka Connect 连接器提供 REST API 端点。 -
KafkaUserStatus提供 Kafka 用户的用户名以及存储其凭证的Secret。 -
KafkaBridgeStatus提供 HTTP 地址,外部客户端应用程序可以访问 Bridge 服务。
资源的当前状态可用于跟踪与达到 所需 状态 的资源相关的进度,如 spec 属性所定义。状态条件提供了资源更改的时间和原因,以及防止或延迟 Operator 实现资源所需状态的事件详情。
最后观察到的生成 是 Cluster Operator 最后协调的资源的生成。如果 observedGeneration 的值与 metadata.generation 的值不同,Operator 还没有对资源的最新版本进行处理。如果这些值相同,状态信息反映了对资源的最新更改。
AMQ Streams 创建和维护自定义资源的状态,定期评估自定义资源的当前状态并相应地更新其状态。当使用 oc edit 对自定义资源执行更新时,其状态 不可编辑。此外,更改 状态 不会影响 Kafka 集群的配置。
此处,我们会看到为 Kafka 自定义资源指定的 status 属性。
带有状态的 Kafka 自定义资源
状态中列出的 Kafka bootstrap 地址不表示这些端点或 Kafka 集群处于 ready 状态。
访问状态信息
您可以从命令行访问资源的状态信息。如需更多信息,请参阅 第 12.1.3 节 “查找自定义资源的状态”。
12.1.3. 查找自定义资源的状态 复制链接链接已复制到粘贴板!
此流程描述了如何查找自定义资源的状态。
先决条件
- OpenShift 集群。
- Cluster Operator 正在运行。
步骤
指定自定义资源,并使用
-o jsonpath选项应用标准 JSONPath 表达式来选择status属性:oc get kafka <kafka_resource_name> -o jsonpath='{.status}'oc get kafka <kafka_resource_name> -o jsonpath='{.status}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此表达式返回指定自定义资源的所有状态信息。您可以使用点表示法(如
status.listeners或status.observedGeneration)来微调您希望看到的状态信息。
其他资源
- 第 12.1.2 节 “AMQ Streams 自定义资源状态信息”
- 有关使用 JSONPath 的更多信息,请参阅 JSONPath 支持。