什么是 Kubernetes 的 Java 客户端?

复制 URL

Kubernetes Java 客户端是一个支持使用 Java 编程语言与 Kubernetes 进行接口的客户端库。Java 客户端是基于 Kubernetes REST API 构建的,允许开发人员以编程方式访问 Kubernetes,并在 Kubernetes 集群中创建、修改和删除各种资源,扩展部署,执行命令和监控事件。 

Kubernetes 是一个开源的容器编排平台,可以自动执行容器化应用的部署、管理和扩展。Kubernetes 客户端库可以处理身份验证等任务,更便于开发人员编写使用 Kubernetes API 的应用。

Kubernetes 官方的 Go 客户端是最早且应用最广泛的客户端库,称为 client-go。Client-go 可供 Kubernetes 本身以及其他发行版和平台(如红帽® OpenShift)使用。其他常见的客户端包括各种编程语言的客户端库,既有官方的,也有社区维护的。虽然 Kubernetes 有多个社区 Java 客户端,但 Kubernetes Java 客户端是官方客户端库,由 Kubernetes API Machinery 特别兴趣小组维护。

近年来,开发人员已纷纷从单体式架构转向更通用的云原生应用。许多企业或机构希望对老的 Java 应用进行现代化改造,因此选择过渡到云部署模型。作为 Java 应用现代化改造的关键部分,云原生 Java 通常会使用 Kubernetes 等容器编排平台,从而高效地管理、部署和扩展应用。 

虽然容器化应用并不一定需要直接与 Kubernetes API 进行通信,但在很多用例中都需要调用 API 来完成特定任务。如果要采用 DIY 方法来管理 Kubernetes 集群,而不是使用红帽 OpenShift 等平台和红帽 Kubernetes 高级集群管理等组件,可以使用官方 Java 客户端与 Kubernetes API 进行通信,以实现以下用例:

  • 管理应用
  • 扩展和自动扩展
  • 监控、警报和日志记录
  • 设置持续部署
  • 通过自定义操作程序扩展 Kubernetes API
  • 集群管理
  • 管理混合云

由于 Kubernetes 及其许多工具和库以 Golang 编写,如果企业或机构的现有开发人员没有 Golang 技术背景,则可能需要额外培训和资源才能迁移到 Kubernetes 中的云原生开发。如果企业或机构拥有现有的 Java 应用或具有 Java 背景的开发人员,那么 Kubernetes Java 客户端可以免去学习一门新编程语言的必要,并简化向云原生开发的过渡。

红帽资源

尽管官方的 Kubernetes Java 客户端似乎是 Java 开发人员的最佳选择,但还有其他几个选项可以帮助运维和管理 Kubernetes 集群。

Kubernetes REST API & kubectl
Kubernetes REST API 作为 Kubernetes 控制平面的前端,用于管理、创建和配置 Kubernetes 集群。您可以使用 Kubernetes 命令行工具 kubectl 与 API 进行交互,以调用 API 和管理 Kubernetes 资源。还可以使用 curl 或 Wget 等 http 客户端直接访问 REST API。

Fabric8 Java 客户端
Fabric8 Java 客户端是一个由社区维护的客户端库,也是最早用于 Kubernetes 的 Java 库。该客户端与官方 Java 客户端的区别是,它提供可靠的领域特定语言(DSL)、各种扩展以及对自定义资源的支持(而无需添加其他依赖项)。 

Kubernetes Operator
Kubernetes Operator是一个特定于应用的自定义控制工具,它使用 Kubernetes API 和 kubectl 工具来创建、配置和管理应用。与大多数控制器不同,Kubernetes Operator 包括特定于域或应用的知识,为容器化应用的整个生命周期实现了自动化,从而更加便于开发人员部署和扩展这些应用所依赖的流程。 

其他第三方库
尽管 Fabric8 和官方 Java 客户端是 Kubernetes 上最常用的 Java 库,但它们绝不是唯一可用的选项。其他 Java 客户端包括用于 OSGI Java 框架的 Amdatu Labs Java 客户端和用于 Kubernetes 的 YAKC Java 客户端。

此外,擅长其他编程语言的开发人员可以选择更适合其需求的非 Java 客户端。其他官方和第三方库提供多种语言版本,包括 C 语言、dotnet、Haskell、Javascript、Perl、Python、Ruby 等。

Kubernetes 是强大的开源容器编排平台,但它没有集成其他组件(如网络、存储、监控和 CI/CD)的功能,而这些组件是加快应用开发所必不可少的。红帽 OpenShift 基于 Kubernetes 构建,提供企业级容器编排平台,同时整合了所有这些组件并加速了容器化应用的交付。

虽然官方的 Kubernetes Java 客户端和任何其他 Kubernetes 库可以用,但还有其他客户端可让您更充分地利用红帽 OpenShift 添加的其他资源和 API 端点。与 Kubernetes 客户端一样,OpenShift 的 REST API 客户端库可用于 Java 和多种编程语言。

除了提供容器技术方面的专业知识外,红帽还通过红帽 OpenShift红帽 Ansible 自动化平台和 Kubernetes Operator 的组合实现了基础架构管理自动化,助您轻松完成应用的现代化改造。红帽还提供额外的工具,用于通过红帽 Kubernetes 高级集群管理跨多个集群和不同基础架构自动执行应用管理,帮助您加快应用交付速度并实现工作负载现代化。

中心

红帽官方博客

获取有关我们的客户、合作伙伴和社区生态系统的最新信息。

所有红帽产品试用

我们的免费试用可让您亲身体验红帽的产品功能,为获得认证做好准备,或评估某个产品是否适合您的企业。

扩展阅读

AWS 上的 K8s:自助式应用平台与托管式应用平台比较

一文了解 AWS 上 K8s 的功能与优势。使用 AWS 上的 Kubernetes,您可以在开发时灵活地自行配置和管理部署,大规模运行应用,添加新功能, 无缝迁移应用, 随时随地运行。

什么是托管控制平面?

使较小的节点能够运行控制平面,从而降低集群的成本,助力实现真正的混合云,

什么是容器化?

容器化是指将软件代码和所需的所有组件(例如库、框架和其他依赖项)打包在一起,让它们隔离在自己的“容器”中。

容器 相关资源

相关文章