日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

基于Kubernetes 构建.NET Core 的技术体系

發(fā)布時(shí)間:2023/12/4 asp.net 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于Kubernetes 构建.NET Core 的技术体系 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

很多公司技術(shù)支持崗位的工作,如配置域名,部署環(huán)境,修改復(fù)位配置,服務(wù)重啟,擴(kuò)容縮容,梳理和完善監(jiān)控,根據(jù)開(kāi)發(fā)的需要查找日志等工作,需要和開(kāi)發(fā)進(jìn)行大量的溝通,如什么是外網(wǎng)域名,什么是內(nèi)網(wǎng)域名、A name、C name,防火墻規(guī)則該如何設(shè)定,操作系統(tǒng)等基礎(chǔ)環(huán)境需要什么依賴。因?yàn)楹芏嘌邪l(fā)不了解運(yùn)維的術(shù)語(yǔ)和知識(shí)點(diǎn),導(dǎo)致溝通困難,效率很低。而且這樣的需求還很多,把運(yùn)維壓的喘不過(guò)氣,占用了幾乎所有的時(shí)間,但是開(kāi)發(fā)的需求可能還是遲遲不能滿足。

這樣的公司可能遇到了以下問(wèn)題:

  • 系統(tǒng)架構(gòu)過(guò)于陳舊,性能、可靠性無(wú)法滿足現(xiàn)有的需求;

  • 原有IT架構(gòu)不靈活,業(yè)務(wù)模塊新增或變更帶來(lái)巨大成本壓力;

  • 系統(tǒng)功能繁雜,結(jié)構(gòu)紊亂,定制的代碼與系統(tǒng)耦合性極高;

  • 服務(wù)種類繁多,各種技術(shù)棧橫行;

  • 人員流動(dòng)交接不充分,新接手的團(tuán)隊(duì)對(duì)部署環(huán)境不了解,只能做周邊的修補(bǔ),不敢遷移 。


如何才能解決?答案是流程化、標(biāo)準(zhǔn)化、自動(dòng)化、平臺(tái)化。

流程化

即主動(dòng)梳理運(yùn)維工作任務(wù),形成標(biāo)準(zhǔn)化的操作流程,尤其是針對(duì)需要多人協(xié)作完成的任務(wù),比如應(yīng)用的發(fā)布部署,把流程固化到流程平臺(tái)系統(tǒng)中,保證每個(gè)人執(zhí)行都能按照流程嚴(yán)格執(zhí)行,不會(huì)有哪些環(huán)節(jié)遺漏,而且當(dāng)前的流程狀態(tài)對(duì)所有人都可見(jiàn),能清晰的看到誰(shuí)正在處理,處理人也會(huì)更主動(dòng)盡快的完成該任務(wù)。

標(biāo)準(zhǔn)化

從架構(gòu)角度按照應(yīng)用類別制定應(yīng)用的部署標(biāo)準(zhǔn),比如Web類型的應(yīng)用,服務(wù)化的應(yīng)用(我們內(nèi)部用的.NET Core),或者是比較新的微服務(wù)的應(yīng)用(.NET Core等),部署腳本和工具平臺(tái)按照約定好的規(guī)范進(jìn)行設(shè)計(jì)開(kāi)發(fā)(基于Kubernetes),減少了因?yàn)閼?yīng)用種類繁多導(dǎo)致工具和平臺(tái)的復(fù)雜。

自動(dòng)化

很多公司早期寫了非常多的腳本,任務(wù)執(zhí)行機(jī)到要執(zhí)行任務(wù)的服務(wù)器之間通過(guò)SSH免密鑰認(rèn)證,再根據(jù)需要批量執(zhí)行命令。隨著服務(wù)器規(guī)模和應(yīng)用數(shù)量的擴(kuò)張,很快腳本執(zhí)行的方式無(wú)法滿足業(yè)務(wù)發(fā)展,難以理解,同一個(gè)類型的任務(wù)多個(gè)腳本并存,存在誤操作,缺乏清晰的操作歷史記錄和回滾機(jī)制,即使后續(xù)替換了如Puppet,Saltstack,Ansible這樣的配置管理工具,但根本問(wèn)題并沒(méi)有解決。

平臺(tái)化

平臺(tái)化一定要在前面三條的基礎(chǔ)上進(jìn)行建設(shè),如果沒(méi)有清晰的流程,明確的標(biāo)準(zhǔn),平臺(tái)建設(shè)起來(lái)也只是自動(dòng)化工具的集成,解決不了公司核心問(wèn)題。

以下說(shuō)的平臺(tái)化內(nèi)容主要是PaaS平臺(tái)化,即主要從應(yīng)用和中間件的角度,這里不討論IaaS的內(nèi)容。

PasS平臺(tái)化將問(wèn)題的關(guān)注點(diǎn)從基礎(chǔ)資源上升到了應(yīng)用層面,目標(biāo)是提供一個(gè)幫助開(kāi)發(fā)人員運(yùn)行、管理應(yīng)用的平臺(tái),讓使用者更關(guān)注運(yùn)行的代碼(業(yè)務(wù)邏輯)。
PaaS能解決的問(wèn)題:

  • 應(yīng)用聚合:如開(kāi)發(fā)需要一個(gè)Redis,直接啟動(dòng)一個(gè)Redis容器即可

  • 服務(wù)發(fā)現(xiàn)、快速伸縮、狀態(tài)管理等

  • 服務(wù)監(jiān)控、恢復(fù)、容災(zāi)

  • 安全管控:不管什么平臺(tái),安全都非常重要,例如A應(yīng)用可以訪問(wèn)B,B不允許訪問(wèn)A以及安全審計(jì)等。

  • 快速部署。


隨著Docker容器技術(shù)的出現(xiàn),讓我們有了更合適的工具建設(shè)PaaS平臺(tái),具備了基于應(yīng)用構(gòu)建服務(wù)的能力。 在Docker容器調(diào)度框架上,我們自然選擇了Kubernetes平臺(tái)。Kubernetes具有資源調(diào)度、服務(wù)發(fā)現(xiàn)、服務(wù)編排、資源邏輯隔離、服務(wù)自愈、安全配置管理、Job任務(wù)支持、自動(dòng)回滾、內(nèi)部域名服務(wù)、健康檢查、有狀態(tài)支持、運(yùn)行監(jiān)控/日志、擴(kuò)容縮容、負(fù)載均衡、灰度升級(jí)、容災(zāi)恢復(fù)、應(yīng)用HA等。Kubernetes的核心是如何解決自動(dòng)部署,擴(kuò)展和管理容器化(containerized)應(yīng)用程序。

下圖是一張最小化的PaaS 架構(gòu)圖:

  • 最上面的Ingress服務(wù)跟傳統(tǒng)的負(fù)載均衡器的功能類似,提供請(qǐng)求分發(fā)的功能,分為兩類: 對(duì)外提供API服務(wù)的API網(wǎng)關(guān)以及對(duì)外提供服務(wù)的站點(diǎn),對(duì)外的API網(wǎng)關(guān)采用Ocelot 進(jìn)行開(kāi)發(fā),Ocelot完成了對(duì)Kubernetes的集成工作,這個(gè)功能已經(jīng)在我們的平臺(tái)上工作一段時(shí)間了,上個(gè)月把代碼合并進(jìn)入Ocelot主干,已經(jīng)可以通過(guò)Nuget包下載,具體參見(jiàn)?kubernetes 客戶端KubeClient使用及常用api

  • Service相當(dāng)于后端Pod的一個(gè)代理服務(wù)器,Service需要通過(guò)Ingress服務(wù)才能被外部Client訪問(wèn), Service 提供了服務(wù)的注冊(cè)和服務(wù)發(fā)現(xiàn)。

  • Pod則相當(dāng)于我們傳統(tǒng)的一個(gè)服務(wù)。

  • 最小化PaaS平臺(tái)還用到了DNS組件,在內(nèi)部服務(wù)運(yùn)行起來(lái)之后,我們會(huì)通過(guò)DNS組件分配一個(gè)內(nèi)部域名供訪問(wèn)時(shí)使用。

  • Kubernetes 選用騰訊云 TKE ,TKE 服務(wù)在集群內(nèi)默認(rèn)啟用了基于騰訊云負(fù)載均衡器實(shí)現(xiàn)的?l7-lb-controller,支持 HTTP、HTTPS,同時(shí)也支持 nginx-ingress 類型,可以根據(jù)業(yè)務(wù)需要選擇不同的 Ingress 類型。

    平臺(tái)關(guān)鍵能力說(shuō)明
    • 應(yīng)用持續(xù)部署,平臺(tái)實(shí)現(xiàn)快速、可視化自動(dòng)部署功能。支持對(duì)應(yīng)用的快速、可視化部署。用戶僅需在界面中選擇相應(yīng)的鏡像和組件,并填寫簡(jiǎn)單的配置信息,點(diǎn)擊部署按鈕,即可完成整個(gè)應(yīng)用的安裝或者升級(jí)。

    • 應(yīng)用彈性伸縮,構(gòu)建具有需求預(yù)測(cè)和容器按需供給能力的彈性伸縮子系統(tǒng),具有基于應(yīng)用的負(fù)載和資源情況進(jìn)行彈性伸縮能力,以應(yīng)對(duì)互聯(lián)網(wǎng)用戶高并發(fā)的特點(diǎn),應(yīng)對(duì)流量沖擊。其中,包括容器彈性伸縮、物理機(jī)彈性伸縮功能。

    • 容器和組件的統(tǒng)一管理,從整體應(yīng)用的角度出發(fā),平臺(tái)不僅管理鏡像和容器,而是將一個(gè)應(yīng)用涉及的所有組件均做了統(tǒng)一管理,通過(guò)對(duì)系統(tǒng)相關(guān)組件和容器統(tǒng)一管理,平臺(tái)將可以實(shí)現(xiàn)系統(tǒng)的全局統(tǒng)一部署、配置、升級(jí)/回滾、監(jiān)控、故障處理等功能。

    • 高可靠性,容器的故障恢復(fù),當(dāng)服務(wù)器宕機(jī)時(shí),平臺(tái)系統(tǒng)會(huì)自動(dòng)在其它服務(wù)器上重新啟動(dòng)容器并為其分配資源,從而達(dá)到秒級(jí)啟動(dòng),恢復(fù)業(yè)務(wù)。保障業(yè)務(wù)不掉線,高可靠運(yùn)行;

    • 應(yīng)用Docker化封裝,系統(tǒng)支持如下幾類常見(jiàn)應(yīng)用:.NET Core、Jexus、Nginx、Redis、Mongodb等。

    PaaS平臺(tái)功能組件

    具體實(shí)施時(shí),主要有幾個(gè)基礎(chǔ)組件需要開(kāi)發(fā):

    • 鏡像管理,實(shí)際運(yùn)行的應(yīng)用鏡像由 “基礎(chǔ)中間件鏡像”+“應(yīng)用包”+“配置” 自動(dòng)構(gòu)建,借助于Visual Studio 2017/2019以及Visual Studio Code,以及微軟開(kāi)源的Helm、Draft,通過(guò)標(biāo)準(zhǔn)化內(nèi)部培訓(xùn),讓開(kāi)發(fā)人員快速理解鏡像概念和制作鏡像以及開(kāi)發(fā)流程;

    • DNS管理,定制化公司內(nèi)部使用的DNS管理平臺(tái),對(duì)公司的DNS進(jìn)行統(tǒng)一管理;

    • 服務(wù)管理,需要定制化一套Kubernetes的Deployment模板,從Ingress到Service再到RC都定義在這套模板里面,方便對(duì)容器進(jìn)行擴(kuò)容、縮容、刪除操作;

    • 服務(wù)內(nèi)Pod管理,屬于Kubernetes自有范疇,查看Service內(nèi)的Pod運(yùn)行情況、Pod日志輸出等功能;

    • 日志管理,將日志輸出到公司的日志平臺(tái)(如ELK平臺(tái)),對(duì)接研發(fā)人員排查問(wèn)題、數(shù)據(jù)埋點(diǎn)使用;

    • 監(jiān)控管理,參考方案:cAdvisor + InfluxDB + Grafana/ Heapster + Grafana/Prometheus/Zabbix:https://www.cnblogs.com/Cherry-Linux/p/9144650.html


    雖然我們屬于創(chuàng)業(yè)公司,我們相信技術(shù)的力量,技術(shù)幫助我們實(shí)現(xiàn)業(yè)務(wù)的持續(xù)健康發(fā)展,從發(fā)展的初期就規(guī)避很多公司的一些困境,一個(gè)中小企業(yè)做成這樣后,日常運(yùn)維的工作量即可大量減少,兩三個(gè)人就能完成日常的應(yīng)用運(yùn)維工作,有興趣地話可以去挑戰(zhàn)一下。當(dāng)然做完這些后,還只是一個(gè)小型的PaaS平臺(tái),我們基于騰訊云的TKE 平臺(tái)構(gòu)建這樣一個(gè)小型的PaaS平臺(tái)。
    如果是再?gòu)?fù)雜一點(diǎn)的PaaS平臺(tái),應(yīng)該還有哪些要繼續(xù)做的呢?環(huán)境管理:即一套平臺(tái)管理多套不同的Kubernetes集群、安全管理、流程管理、計(jì)費(fèi)管理等功能模塊。還有因?yàn)橐?guī)模增加和更高的可靠性要求,對(duì)應(yīng)的網(wǎng)絡(luò),IO等各種優(yōu)化。其實(shí)還有很多功能就不一一列舉了,可以根據(jù)自己的實(shí)際情況添加功能模塊,設(shè)計(jì)有自己公司特色的PaaS平臺(tái)。

    相關(guān)文章:

    • 結(jié)合使用 Draft 與 Tencent Kubernetes Engine (TKE)

    • Kubernetes架構(gòu)為什么是這樣的?

    • kubernetes 客戶端KubeClient使用及常用api

    • ASP.NET Core應(yīng)用程序容器化、持續(xù)集成與Kubernetes集群部署(三

    • ASP.NET Core 借助 K8S 玩轉(zhuǎn)容器編排

    • Kubernetes初探[1]:部署你的第一個(gè)ASP.NET Core應(yīng)用到k8s集群

    • k8s使用helm打包c(diǎn)hart并上傳到騰訊云TencentHub

    原文地址:https://www.cnblogs.com/shanyou/p/10658110.html

    .NET社區(qū)新聞,深度好文,歡迎訪問(wèn)公眾號(hào)文章匯總 http://www.csharpkit.com

    總結(jié)

    以上是生活随笔為你收集整理的基于Kubernetes 构建.NET Core 的技术体系的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。