2.44. Kubernetes


对 Kubernetes API 执行操作

2.44.1. Maven 协调

在 code.quarkus.redhat.com 上创建一个具有此扩展名的新项目

或者在现有项目中添加协调:

<dependency>
    <groupId>org.apache.camel.quarkus</groupId>
    <artifactId>camel-quarkus-kubernetes</artifactId>
</dependency>
Copy to Clipboard Toggle word wrap

2.44.2. 其他 Camel Quarkus 配置

重要

在这个 Camel Extensions for Quarkus 发行版本中,只有在将 camel-quarkus-master 扩展用作集群服务时,才支持 camel-quarkus-kubernetes 扩展。另外,为了支持 camel-quarkus-kubernetes 扩展,您必须明确添加对应用程序中 quarkus-openshift-client 扩展的依赖项。

2.44.2.1. 自动注册 Kubernetes 客户端实例

扩展会自动注册名为 kubernetesClient 的 Kubernetes 客户端 bean。您可以在路由中引用 bean,如下所示:

from("direct:pods")
    .to("kubernetes-pods:///?kubernetesClient=#kubernetesClient&operation=listPods")
Copy to Clipboard Toggle word wrap

默认情况下,客户端从本地 kubeconfig 文件配置。您可以通过 application.properties 中的属性自定义客户端配置:

quarkus.kubernetes-client.master-url=https://my.k8s.host
quarkus.kubernetes-client.namespace=my-namespace
Copy to Clipboard Toggle word wrap

完整的配置选项记录在 Quarkus Kubernetes 客户端指南 中。

当同一路由部署到多个 pod 上时,可能会有一定将这个扩展与 Master 结合使用。在这样的设置中,单个使用者将在整个相机 master 命名空间中处于活动状态。

例如,在多个 pod 中部署了以下路由:

from("master:ns:timer:test?period=100").log("Timer invoked on a single pod at a time");
Copy to Clipboard Toggle word wrap

可以使用如下属性启用 kubernetes 集群服务:

quarkus.camel.cluster.kubernetes.enabled = true
Copy to Clipboard Toggle word wrap

因此,单个消费者将在 ns camel master 命名空间中活跃。这意味着,在一个给定时间,只有一个计时器将在整个集群中生成交换。换句话说,在某个时间点上,消息将在单个 pod 上每 100ms 进行一次日志记录。

kubernetes 集群服务可以通过调整 quarkus.camel.cluster.kubernetes.* 属性来进一步调整。

Expand
配置属性类型默认

lock quarkus.camel.cluster.kubernetes.enabled

是否应该根据 'quarkus.camel.cluster.kubernetes.*' 配置自动配置 Kubernetes Cluster Service。

布尔值

false

lock quarkus.camel.cluster.kubernetes-id

集群服务 ID (默认为 null)。

字符串

 

lock quarkus.camel.cluster.kubernetes.master-url

Kubernetes 主机的 URL (默认为从 Kubernetes 客户端属性中读取)。

字符串

 

lock quarkus.camel.cluster.kubernetes.connection-timeout-millis

向 Kubernetes API 服务器发出请求时使用的连接超时(毫秒)。

java.lang.Integer

 

lock quarkus.camel.cluster.kubernetes.namespace

包含 pod 和 configmap 的 Kubernetes 命名空间的名称(默认为自动探测)。

字符串

 

lock quarkus.camel.cluster.kubernetes.pod-name

当前 pod 的名称(默认为从容器主机名自动检测)。

字符串

 

lock quarkus.camel.cluster.kubernetes.jitter-factor

要应用的 jitter 因素以防止所有 pod 在同一即时调用 Kubernetes API (默认为 1.2)。

java.lang.Double

 

lock quarkus.camel.cluster.kubernetes.lease-duration-millis

当前领导租期的默认持续时间(默认为 15000)。

java.lang.Long

 

lock quarkus.camel.cluster.kubernetes.renew-deadline-millis

领导机之后必须停止其服务的时间,因为它可能丢失了领导权(默认为 10000)。

java.lang.Long

 

lock quarkus.camel.cluster.kubernetes.retry-period-millis

连续两次尝试检查并获取领导权利之间的时间。它利用 jitter 因子(默认为 2000)进行自定义。

java.lang.Long

 

lock quarkus.camel.cluster.kubernetes-order

服务查找顺序/优先级(默认为 2147482647)。

java.lang.Integer

 

lock quarkus.camel.cluster.kubernetes.resource-name

用于执行光驱锁定的租期资源的名称(默认为 'leaders')。当底层 Kubernetes 资源可以管理单个锁定时,资源名称用作前缀。

字符串

 

lock quarkus.camel.cluster.kubernetes.lease-resource-type

Kubernetes 中使用的租期资源类型,可以是 'config-map' 或 'lease'(默认为 'lease')。

org.apache.camel.component.kubernetes.cluster.LeaseResourceType

 

lock quarkus.camel.cluster.kubernetes.rebalancing

camel master 命名空间领导是否应该在集群中的所有 camel 上下文间平均分配。

布尔值

true

lock quarkus.camel.cluster.kubernetes-labels

用于识别组成集群的 pod 的键/值,默认为空映射。

map<String,String>

 

lock 构建时修复的配置属性。所有其他配置属性可在运行时过度使用。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat