2.7. 自定义 OpenShift 资源
AMQ Streams 部署会创建 OpenShift 资源,如 Deployments、StatefulSets、Pod 和 Services。这些资源由 AMQ Streams operator 管理。只有负责管理特定 OpenShift 资源的操作器才能更改该资源。如果您尝试手动更改 Operator 管理的 OpenShift 资源,Operator 将恢复您的更改。
如果要执行某些任务,则更改 Operator 管理的 OpenShift 资源会很有用,例如:
-
添加可控制 Istio 或其他服务如何处理
Pod的自定义标签或注解 -
管理集群如何创建
Loadbalancer-type Services
您可以使用 AMQ Streams 自定义资源中的 template 属性进行更改。template 属性在下列资源中受支持:API 参考提供了有关可自定义字段的更多详情。
Kafka.spec.kafka-
请查看 第 6.2.33 节 “
KafkaClusterTemplate模式参考” Kafka.spec.zookeeper-
请查看 第 6.2.43 节 “
ZookeeperClusterTemplate模式参考” Kafka.spec.entityOperator-
请查看 第 6.2.48 节 “
EntityOperatorTemplate模式参考” Kafka.spec.kafkaExporter-
请查看 第 6.2.56 节 “
KafkaExporterTemplate模式参考” Kafka.spec.cruiseControl-
请查看 第 6.2.52 节 “
CruiseControlTemplate模式参考” KafkaConnect.spec-
请查看 第 6.2.72 节 “
KafkaConnectTemplate模式参考” KafkaMirrorMaker.spec-
请查看 第 6.2.112 节 “
KafkaMirrorMakerTemplate模式参考” KafkaMirrorMaker2.spec-
请查看 第 6.2.72 节 “
KafkaConnectTemplate模式参考” KafkaBridge.spec-
请查看 第 6.2.121 节 “
KafkaBridgeTemplate模式参考” KafkaUser.spec-
请查看 第 6.2.106 节 “
KafkaUserTemplate模式参考”
在以下示例中,template 属性用于修改 Kafka 代理 pod 中的标签。
模板自定义示例
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
labels:
app: my-cluster
spec:
kafka:
# ...
template:
pod:
metadata:
labels:
mylabel: myvalue
# ...
2.7.1. 自定义镜像拉取(pull)策略 复制链接链接已复制到粘贴板!
AMQ Streams 允许您为 Cluster Operator 部署的所有 pod 中的容器自定义镜像拉取策略。镜像拉取策略使用 Cluster Operator 部署中的环境变量 STRIMZI_IMAGE_PULL_POLICY 配置。STRIMZI_IMAGE_PULL_POLICY 环境变量可以设置为三个不同的值:
Always- 每次 pod 启动时或重启时,容器镜像都会从 registry 中拉取。
IfNotPresent- 只有在之前没有拉取时,才会从 registry 中拉取容器镜像。
Never- 容器镜像从 registry 中拉取。
目前,镜像拉取策略只能一次为所有 Kafka、Kafka Connect 和 Kafka MirrorMaker 集群自定义。更改策略将导致对所有 Kafka、Kafka Connect 和 Kafka MirrorMaker 集群进行滚动更新。
2.7.2. 应用终止宽限期 复制链接链接已复制到粘贴板!
应用终止宽限期,以便让 Kafka 集群有足够的时间完全关闭。
使用 terminationGracePeriodSeconds 属性指定时间。将属性添加到 Kafka 自定义资源的 template.pod 配置中。
您添加的时间将取决于 Kafka 集群的大小。终止宽限期的 OpenShift 默认为 30 秒。如果您发现集群没有完全关闭,您可以提高终止宽限期。
每次 pod 重启时都会应用终止宽限期。当 OpenShift 向 pod 中运行的进程发送 术语 (termination)信号时,这个周期开始。周期应反映在停止前将终止 pod 进程转移到另一个 pod 所需的时间。在周期结束后,kill 信号将停止 pod 中仍在运行的任何进程。
以下示例在 Kafka 自定义资源中添加终止宽限期 120 秒。您还可以在其他 Kafka 组件的自定义资源中指定配置。
终止宽限期配置示例
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
spec:
kafka:
# ...
template:
pod:
terminationGracePeriodSeconds: 120
# ...
# ...