新聞中心
如何使用Kubernetes C#客戶(hù)端庫(kù)?
譯文
作者:布加迪編譯 2020-03-19 08:00:00
云計(jì)算 使用Kubernetes并非總是易事。本文幫你充分利用官方的.NET Kubernetes客戶(hù)端和.NET或.NET Core來(lái)構(gòu)建自己的Kubernetes工具。

創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比平泉網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式平泉網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋平泉地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴(lài)。
【51CTO.com快譯】使用Kubernetes并非總是易事。管理集群和pod耗費(fèi)精力,雖然云托管的Kubernetes實(shí)例(比如Azure的AKS)可以替你處理許多繁重的任務(wù),但如果你在本地或自己的虛擬基礎(chǔ)架構(gòu)上運(yùn)行Kubernetes,就沒(méi)法使用它們。
這時(shí)Kubernetes API有了用武之地,因?yàn)樗荎ubernetes在組件與外部控制器之間進(jìn)行聯(lián)系的手段。你可以使用kubectl命令行工具與API進(jìn)行聯(lián)系,也可以通過(guò)熟悉的REST(代表性狀態(tài)傳輸)調(diào)用來(lái)使用它。該API可幫助你管理工作負(fù)載、配置集群并管理應(yīng)用程序和集群的行為。
像這種充分利用REST的API是有用的工具,但如果你構(gòu)建自己的控制器,它們需要大量的開(kāi)發(fā)。你可以借助其中一個(gè)官方的Kubernetes API客戶(hù)端(現(xiàn)在包括.NET庫(kù)),避免相關(guān)的開(kāi)發(fā)開(kāi)銷(xiāo)。除了官方客戶(hù)端外,還有非官方客戶(hù)端:如果官方版與你想要使用的方式不太相符,非官方版含有兩種替代的.NET實(shí)現(xiàn)。
.NET Kubernetes API客戶(hù)端庫(kù)簡(jiǎn)介
官方.NET客戶(hù)端庫(kù)在GitHub上就有,由包括微軟人員在內(nèi)的一群開(kāi)源開(kāi)發(fā)人員管理。最新版本是1.6.21,正在開(kāi)發(fā)中??梢詮腉itHub下載代碼并自行編譯,也可以通過(guò)NuGet將該庫(kù)作為一個(gè)名為KubernetesClient的軟件包添加到應(yīng)用程序。安裝完畢后,使用加載客戶(hù)端的語(yǔ)句將庫(kù)添加到代碼中。該庫(kù)同時(shí)支持.NET和.NET Core,因此你可以用它編寫(xiě)跨平臺(tái)應(yīng)用程序以及純Windows代碼。
安裝后,你可以開(kāi)始使用該庫(kù)為Kubernetes構(gòu)建自己的工具,比如分布式應(yīng)用程序中響應(yīng)事件的特定事件處理程序。可從監(jiān)聽(tīng)Kubernetes命名空間上的事件入手。你可以使用C#現(xiàn)有的異步編程功能、設(shè)置等待以監(jiān)視事件并將處理程序連接到結(jié)果來(lái)執(zhí)行此操作。 Kubernetes提供了自定義資源,可用于監(jiān)視你自己的事件,并管理自定義Kubernetes基礎(chǔ)架構(gòu)。
在Kubernetes端,先為代碼將使用的控制器構(gòu)建適當(dāng)?shù)淖远x資源定義。這將需要一個(gè)API版本以及資源所需的許多適當(dāng)?shù)脑獢?shù)據(jù)。這些元素映射到C# Kubernetes API中的對(duì)象,可以從對(duì)象中讀取。最后,你可以在資源的spec字段和status字段中添加自己的數(shù)據(jù),自定義資源類(lèi)進(jìn)行管理。
一旦你有了這些元素,可以使用我們想要查看的資源的自定義資源定義將它們包裝在Kubernetes API客戶(hù)端實(shí)例中,從而構(gòu)建一個(gè)控制器。一旦你有了事件處理程序的結(jié)果,就可以在Kubernetes管理應(yīng)用程序的其余部分中使用它們,比如說(shuō)編寫(xiě)日志或修改Kubernetes實(shí)例。如果你的Kubernetes代碼將消息寫(xiě)入到自定義資源的狀態(tài)字段,這樣的處理程序就可以根據(jù)需要生成新的pod。
創(chuàng)建Kubernetes客戶(hù)端
創(chuàng)建客戶(hù)端意味著為實(shí)例加載Kubernetes配置數(shù)據(jù)。你可以從默認(rèn)的本地kubeconfig、某個(gè)特定文件或目前集群執(zhí)行此操作。一旦有了作為配置對(duì)象的配置數(shù)據(jù),你可以使用已加載的配置創(chuàng)建客戶(hù)端。
這為你提供了可以與Kubernetes API調(diào)用一起使用的客戶(hù)端對(duì)象。庫(kù)的GitHub存儲(chǔ)庫(kù)中有一組實(shí)用的示例代碼。值得復(fù)制和運(yùn)行示例,因?yàn)樗鼈兛梢詭椭懔私馊绾问褂?NET Kubernetes客戶(hù)端、如何理解語(yǔ)法以及如何使用API??以處理創(chuàng)建、讀取、更新和刪除等操作。
一個(gè)有用的示例是一個(gè)25行的小程序,該程序列出了pod中的命名空間。如果你構(gòu)建用于控制Kubernetes實(shí)例的應(yīng)用程序,列出所有目前的命名空間很重要,因?yàn)檫@些命名空間讓你可以將API定位于Kubernetes基礎(chǔ)架構(gòu)的特定部分。
處理Kubernetes API文檔
為了充分利用.NET API庫(kù),最好花點(diǎn)時(shí)間閱讀Kubernetes API的文檔。雖然庫(kù)中有足夠的資源讓你入門(mén),但是你需要深入研究官方文檔以獲得構(gòu)建自己的控制器所需的詳細(xì)信息。查看其他一些API庫(kù)實(shí)現(xiàn)的文檔有所幫助。將Java或Go調(diào)用轉(zhuǎn)換成C#并不難,你可以看看別人如何使用這些API。
另一個(gè)選擇是使用kubectl文檔來(lái)查看如何在代碼中使用關(guān)鍵的kubectl動(dòng)詞。在處理更復(fù)雜的任務(wù)之前,最好先使用API??之類(lèi)的工具來(lái)構(gòu)建可自動(dòng)執(zhí)行常見(jiàn)操作的應(yīng)用程序。在編寫(xiě)任何新代碼之前,你應(yīng)該檢查現(xiàn)有的Kubernetes擴(kuò)展是否已經(jīng)實(shí)現(xiàn)了你所考慮的功能,比如KEDA(基于Kubernetes的事件驅(qū)動(dòng)型自動(dòng)擴(kuò)展)。
用你自己的代碼自動(dòng)執(zhí)行Kubernetes操作
管理Kubernetes可能很復(fù)雜,因此很高興看到一組官方庫(kù)可以幫助你構(gòu)建自己的工具以使用Kubernetes API。由于活躍的社區(qū)和非官方客戶(hù)端的相互交流,.NET API團(tuán)隊(duì)很顯然在竭力提供一種實(shí)用的框架用于構(gòu)建可與Kubernetes協(xié)同運(yùn)行的代碼,無(wú)論在.NET Framework上還是在.NET Core上。
如果我們要構(gòu)建在云原生平臺(tái)上運(yùn)行的分布式應(yīng)用程序所需要的新一代操作工具,這類(lèi)工具必不可少。通過(guò)使用熟悉的語(yǔ)言,尤其是可訪(fǎng)問(wèn)其他平臺(tái)庫(kù)的語(yǔ)言,我們就能構(gòu)建連接Azure Pipelines、GitHub和Kubernetes等平臺(tái)的工具,使我們目前手動(dòng)完成的大量工作實(shí)現(xiàn)自動(dòng)化。
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】
名稱(chēng)欄目:如何使用KubernetesC#客戶(hù)端庫(kù)?
當(dāng)前網(wǎng)址:http://m.fisionsoft.com.cn/article/dpcjipd.html


咨詢(xún)
建站咨詢(xún)
