kubernetes -c_如何使用Kubernetes C#客户端库

kubernetes -c

使用Kubernetes并不总是那么容易。 管理集群和Pod需要工作,尽管Azure的AKS等云托管的Kubernetes实例可以为您处理很多繁重的工作,但是如果您在本地或自己的虚拟基础架构上运行Kubernetes,则它们将不可用。

这就是Kubernetes API发挥作用的地方,因为它是Kubernetes在组件和外部控制器之间进行通信的方式。 您可以使用kubectl命令行工具与API通信,也可以通过熟悉的REST(表示状态传输)调用使用它。 该API可帮助您管理工作负载,配置集群以及管理应用程序和集群的行为。

[ 同样在InfoWorld上:10种最佳API管理工具 ]

像这样的RESTful API是有用的工具,但是如果您要构建自己的控制器,则它们需要大量的开发工作。 您可以通过使用其中一个正式的Kubernetes API客户端 (现在包括.NET库)来消除相关的开发开销。 除正式版本外,还有非官方客户端,如果正式版本与您的使用方式不太相符,则包括两个替代的.NET实现。

.NET Kubernetes API客户端库简介

官方.NET客户端库在GitHub上可用,由包括Microsoft人员在内的一组开源开发人员管理。 当前版本是1.6.21,并且正在开发中。 您可以从GitHub下载代码并KubernetesClient编译,也可以通过NuGet将库作为名为KubernetesClient的软件包添加到应用程序中 。 安装后,使用可加载客户端的using语句将库添加到代码中,即k8s 。 该库支持.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库实现的文档会有所帮助; 将JavaGo调用转换为C#并不难,您可以看到其他人如何使用这些API。

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

用您自己的代码自动化Kubernetes操作

管理Kubernetes可能很复杂,因此很高兴看到一组官方库可以帮助您构建自己的工具以与Kubernetes API一起使用。 通过活跃的社区和与非官方客户端的交叉交流,很明显.NET API团队正在努力提供一个有用的框架,以构建可与.NET Framework和.NET Core一起使用的Kubernetes的代码。

如果我们要构建在云原生平台上运行的分布式应用程序所需的新一代操作工具,则此类工具必不可少。 通过使用熟悉的语言,尤其是可以访问其他平台库的语言,我们可以构建桥接Azure Pipelines,GitHub和Kubernetes之类的平台的工具,从而使我们目前所做的大部分工作自动化。

翻译自: https://www.infoworld.com/article/3532819/how-to-use-the-kubernetes-c-client-library.html

kubernetes -c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值