如何使用Kubernetes C#客户端库?

如何使用Kubernetes C#客户端库?

译文
作者:布加迪编译 2020-03-19 08:00:00

云计算 使用Kubernetes并非总是易事。本文帮你充分利用官方的.NET Kubernetes客户端和.NET或.NET Core来构建自己的Kubernetes工具。

【51CTO.com快译】使用Kubernetes并非总是易事。管理集群和pod耗费精力,虽然云托管的Kubernetes实例(比如Azure的AKS)可以替你处理许多繁重的任务,但如果你在本地或自己的虚拟基础架构上运行Kubernetes,就没法使用它们。

[[319140]]

这时Kubernetes API有了用武之地,因为它是Kubernetes在组件与外部控制器之间进行联系的手段。你可以使用kubectl命令行工具与API进行联系,也可以通过熟悉的REST(代表性状态传输)调用来使用它。该API可帮助你管理工作负载、配置集群并管理应用程序和集群的行为。

像这种充分利用REST的API是有用的工具,但如果你构建自己的控制器,它们需要大量的开发。你可以借助其中一个官方的Kubernetes API客户端(现在包括.NET库),避免相关的开发开销。除了官方客户端外,还有非官方客户端:如果官方版与你想要使用的方式不太相符,非官方版含有两种替代的.NET实现。

.NET Kubernetes API客户端库简介

官方.NET客户端库在GitHub上就有,由包括微软人员在内的一群开源开发人员管理。最新版本是1.6.21,正在开发中。可以从GitHub下载代码并自行编译,也可以通过NuGet将该库作为一个名为KubernetesClient的软件包添加到应用程序。安装完毕后,使用加载客户端的语句将库添加到代码中。该库同时支持.NET和.NET Core,因此你可以用它编写跨平台应用程序以及纯Windows代码。

安装后,你可以开始使用该库为Kubernetes构建自己的工具,比如分布式应用程序中响应事件的特定事件处理程序。可从监听Kubernetes命名空间上的事件入手。你可以使用C#现有的异步编程功能、设置等待以监视事件并将处理程序连接到结果来执行此操作。 Kubernetes提供了自定义资源,可用于监视你自己的事件,并管理自定义Kubernetes基础架构。

在Kubernetes端,先为代码将使用的控制器构建适当的自定义资源定义。这将需要一个API版本以及资源所需的许多适当的元数据。这些元素映射到C# Kubernetes API中的对象,可以从对象中读取。最后,你可以在资源的spec字段和status字段中添加自己的数据,自定义资源类进行管理。

一旦你有了这些元素,可以使用我们想要查看的资源的自定义资源定义将它们包装在Kubernetes API客户端实例中,从而构建一个控制器。一旦你有了事件处理程序的结果,就可以在Kubernetes管理应用程序的其余部分中使用它们,比如说编写日志或修改Kubernetes实例。如果你的Kubernetes代码将消息写入到自定义资源的状态字段,这样的处理程序就可以根据需要生成新的pod。

创建Kubernetes客户端

创建客户端意味着为实例加载Kubernetes配置数据。你可以从默认的本地kubeconfig、某个特定文件或目前集群执行此操作。一旦有了作为配置对象的配置数据,你可以使用已加载的配置创建客户端。

这为你提供了可以与Kubernetes API调用一起使用的客户端对象。库的GitHub存储库中有一组实用的示例代码。值得复制和运行示例,因为它们可以帮助你了解如何使用.NET Kubernetes客户端、如何理解语法以及如何使用API​​以处理创建、读取、更新和删除等操作。

一个有用的示例是一个25行的小程序,该程序列出了pod中的命名空间。如果你构建用于控制Kubernetes实例的应用程序,列出所有目前的命名空间很重要,因为这些命名空间让你可以将API定位于Kubernetes基础架构的特定部分。

处理Kubernetes API文档

为了充分利用.NET API库,最好花点时间阅读Kubernetes API的文档。虽然库中有足够的资源让你入门,但是你需要深入研究官方文档以获得构建自己的控制器所需的详细信息。查看其他一些API库实现的文档有所帮助。将Java或Go调用转换成C#并不难,你可以看看别人如何使用这些API。

另一个选择是使用kubectl文档来查看如何在代码中使用关键的kubectl动词。在处理更复杂的任务之前,最好先使用API​​之类的工具来构建可自动执行常见操作的应用程序。在编写任何新代码之前,你应该检查现有的Kubernetes扩展是否已经实现了你所考虑的功能,比如KEDA(基于Kubernetes的事件驱动型自动扩展)。

用你自己的代码自动执行Kubernetes操作

管理Kubernetes可能很复杂,因此很高兴看到一组官方库可以帮助你构建自己的工具以使用Kubernetes API。由于活跃的社区和非官方客户端的相互交流,.NET API团队很显然在竭力提供一种实用的框架用于构建可与Kubernetes协同运行的代码,无论在.NET Framework上还是在.NET Core上。

如果我们要构建在云原生平台上运行的分布式应用程序所需要的新一代操作工具,这类工具必不可少。通过使用熟悉的语言,尤其是可访问其他平台库的语言,我们就能构建连接Azure Pipelines、GitHub和Kubernetes等平台的工具,使我们目前手动完成的大量工作实现自动化。

原文标题:How to use the Kubernetes C# client library,作者:Simon Bisson

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/228667.html<

(0)
管理的头像管理
上一篇2025-04-18 10:05
下一篇 2025-04-18 10:06

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注