個(gè)推在Kubernetes的效率提升舉措揭秘及最佳實(shí)踐解析-創(chuàng)新互聯(lián)

一、如何提升Kubernetes研發(fā)效率

成都創(chuàng)新互聯(lián)公司是網(wǎng)站建設(shè)專(zhuān)家,致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營(yíng)銷(xiāo),專(zhuān)業(yè)領(lǐng)域包括成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)、電商網(wǎng)站制作開(kāi)發(fā)、微信平臺(tái)小程序開(kāi)發(fā)、微信營(yíng)銷(xiāo)、系統(tǒng)平臺(tái)開(kāi)發(fā),與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開(kāi)發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營(yíng)銷(xiāo)的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評(píng)估并優(yōu)化我們的方案,為客戶提供全方位的互聯(lián)網(wǎng)品牌整合方案!

本文將從三方面闡述如何提升Kubernetes研發(fā)效率:

微服務(wù)與CI開(kāi)發(fā)(提升開(kāi)發(fā)效率)

研發(fā)網(wǎng)絡(luò)與Kubernetes互通(提升調(diào)試效率)

服務(wù)端軟件管理平臺(tái)建設(shè)(提升運(yùn)維效率)

01


開(kāi)發(fā)效率:微服務(wù)與CI 開(kāi)發(fā)

微服務(wù)目前已成為主流的容器編排技術(shù),然而不少開(kāi)發(fā)者在使用過(guò)中或多或少會(huì)遇到一些問(wèn)題,主要在于以下四點(diǎn):

1)Kubernetes涉及較多專(zhuān)業(yè)知識(shí),而研發(fā)掌握有關(guān)知識(shí)有一定的門(mén)檻。

2)Kubernetes鏡像常常沒(méi)有充分利用 Build Cache,導(dǎo)致占用構(gòu)建存儲(chǔ)大,傳輸慢。

3)不同的業(yè)務(wù)其鏡像差異大,運(yùn)維在對(duì)鏡像進(jìn)行維護(hù)時(shí)操作過(guò)程非常復(fù)雜。

4)Kubernetes安全更新后,不僅要確保程序沒(méi)有漏洞,還要確保編程語(yǔ)言、基礎(chǔ)鏡像、業(yè)務(wù)本身都沒(méi)有安全漏洞。如果研發(fā)人員要維護(hù)全部的更新內(nèi)容,負(fù)擔(dān)比較重,一定程度上會(huì)影響其研發(fā)效率。

開(kāi)發(fā)一個(gè)新的微服務(wù)涉及諸多環(huán)節(jié),比如Dockerfile的編寫(xiě)、安全更新的維護(hù)、緩存層的設(shè)計(jì),監(jiān)控指標(biāo)的接入等。而這些環(huán)節(jié)會(huì)出現(xiàn)一些問(wèn)題,主要包括容器體系重復(fù)建設(shè)、安全更新需求需要在各個(gè)服務(wù)重復(fù)實(shí)現(xiàn)、Build Cache難以跨服務(wù)復(fù)用等。

為解決以上問(wèn)題,我們采用了以下措施:

1)在容器體系統(tǒng)一建設(shè)的同時(shí),做到允許自定義,降低門(mén)檻;

2)將鏡像統(tǒng)一為公用幾類(lèi)(Node.js/Java/Golang),統(tǒng)一維護(hù)安全更新;

3) 跨服務(wù)共用Build Cache;

4) 統(tǒng)一置入工具鏈、依賴(lài)、ARM適配、監(jiān)控指標(biāo)等。這樣一來(lái),對(duì)于ARM問(wèn)題,在構(gòu)建鏡像時(shí),我們會(huì)先構(gòu)建完X86,再構(gòu)建統(tǒng)一的ARM。這些步驟都在統(tǒng)一的CI腳本中完成,從而節(jié)省時(shí)間。

02


調(diào)試效率:開(kāi)發(fā)集群網(wǎng)絡(luò)

在調(diào)試效率上,Kubernetes的痛點(diǎn)在于debug流程復(fù)雜耗時(shí)長(zhǎng),因?yàn)槲⒎?wù)通常需要依賴(lài)服務(wù)進(jìn)行調(diào)試,但是開(kāi)發(fā)機(jī)無(wú)法連接集群內(nèi)Kubernetes Service 進(jìn)行調(diào)試,且服務(wù)可能不位于流量入口位置,需要將中間環(huán)節(jié)的流量轉(zhuǎn)發(fā)。

怎么樣才能縮短debug流程,讓調(diào)試完的代碼能夠秒級(jí)生效呢?

個(gè)推在 Kubernetes 的效率提升舉措揭秘及最佳實(shí)踐解析

 

來(lái)看上面左邊這張圖。左圖上半部分由開(kāi)發(fā)機(jī)與DNS組成。下半部分是k8s集群,包含它的CoreDNS以及service B。為縮短調(diào)試流程,我們?cè)陂_(kāi)發(fā)區(qū)的網(wǎng)絡(luò)拓?fù)渲胁渴鹆薔ginx,用于把所有的 k8s cluster的域名解析到 k8s服務(wù)上。

比如我們統(tǒng)一取名為*.svc. cluster.local,并把它都統(tǒng)一解析到 k8s集群上,集群上我們調(diào)起Nginx,Nginx收到來(lái)自b.app.svc.cluster.local的請(qǐng)求后,直接向 k8s的CoreDNS去獲取它svc的cluster IP。獲取到IP后,它就可以知道,該項(xiàng)服務(wù)是 APP內(nèi)service中的B服務(wù),以及cluster的IP地址,然后Nginx便可以通過(guò)proxy pass進(jìn)行轉(zhuǎn)發(fā)。這樣我們就實(shí)現(xiàn)了在開(kāi)發(fā)機(jī)內(nèi)任意地訪問(wèn)開(kāi)發(fā)網(wǎng)k8s內(nèi)進(jìn)行的服務(wù)的需求。

03


運(yùn)維效率:Kubernetes APP平臺(tái)

在運(yùn)維效率上,Kubernetes的痛點(diǎn)主要來(lái)自以下四方面:

1)微服務(wù)化導(dǎo)致服務(wù)數(shù)量增加,需要將服務(wù)分組及模塊化管理,而這會(huì)增加管理成本。

2)每個(gè)服務(wù)都有各自的依賴(lài),當(dāng)我們想針對(duì)服務(wù)進(jìn)行管理的時(shí)候,存在依賴(lài)管理的問(wèn)題。

3)由于服務(wù)數(shù)量眾多,服務(wù)手工升級(jí)過(guò)程也耗時(shí)耗力。

4)在私有化部署背景下,我們很難直接將應(yīng)用快速分發(fā)到客戶集群上。

為解決以上痛點(diǎn),我們提出了Kubernetes APP平臺(tái)思路,并設(shè)計(jì)了如下技術(shù)架構(gòu)。

個(gè)推在 Kubernetes 的效率提升舉措揭秘及最佳實(shí)踐解析

架構(gòu)圖由四部分組成:Helm、ChartMuseum、APP Installer Container、Kubeapps。Helm是包管理器,可以管理依賴(lài),并提供鉤子機(jī)制,幫助實(shí)現(xiàn)模板化。ChartMuseum用于包存儲(chǔ)。APP Installer Container執(zhí)行定制的APP結(jié)構(gòu)規(guī)范、自動(dòng)升級(jí)SQL Schema、自動(dòng)導(dǎo)入Consul配置以及注冊(cè)網(wǎng)關(guān)入口及插件。Kubeapps方便UI管理。

要想提升運(yùn)維效率,需要將運(yùn)維管理維度從服務(wù)層面轉(zhuǎn)換成APP層面。為此,我們把相近的業(yè)務(wù)合并成一個(gè)統(tǒng)一的模塊去管理,降低管理復(fù)雜度。具體來(lái)看,每個(gè)服務(wù)生成一個(gè)helm包,包含自身標(biāo)準(zhǔn)化的SQL、Consul配置等,掛在Helm Hook上由定制化的Runner執(zhí)行,并通過(guò)標(biāo)準(zhǔn)化SQL升級(jí)、Consul配置管理等,提升運(yùn)維管理效率。

個(gè)推K8S最佳實(shí)踐解析

個(gè)推Kubernetes最佳實(shí)踐將從個(gè)推k8s集群概覽、使用規(guī)范制定、使用經(jīng)驗(yàn)總結(jié)三方面展開(kāi),以幫助開(kāi)發(fā)者在Kubernetes使用過(guò)程中根據(jù)企業(yè)自身應(yīng)用和環(huán)境特點(diǎn)找到適合的方案。

01


個(gè)推K8s集群概覽

個(gè)推在 Kubernetes 的效率提升舉措揭秘及最佳實(shí)踐解析

首先簡(jiǎn)要介紹下我們的組件地圖與各組件的用途。如果用一把傘來(lái)比喻我們的組件地圖,那么傘的核心組件是Kubernetes,docker則是底層最基礎(chǔ)的運(yùn)行環(huán)境,calico和fannel是網(wǎng)絡(luò)cni的選型;coreDns是k8s內(nèi)部的域名解析組件;kube-stat-metrics是主要的監(jiān)控組件,kube-stat-metrics主要用于采集pod的狀態(tài); dashboard是運(yùn)維管理工具;Harbor是企業(yè)級(jí)的鏡像倉(cāng)庫(kù)開(kāi)源解決方案;consul/Apollo是配置中心;Ingress用于提供負(fù)載均衡功能,是我們暴露集群外到集群內(nèi)服務(wù)的http和https路由的方案之一。

02


使用規(guī)范

為了更好地對(duì)k8s進(jìn)行管理和維護(hù),我們制定了詳細(xì)的k8s使用規(guī)范。在個(gè)推實(shí)踐中,規(guī)范主要分為五類(lèi):參數(shù)、安全、資源、日志、YAML。參數(shù)規(guī)范主要指的是對(duì)參數(shù)命名規(guī)則的規(guī)范。常見(jiàn)參數(shù)主要包含dns、ulimit、kubelet insufficient pods、calico、內(nèi)核參數(shù)、xfs系統(tǒng)的d_type支持、label等。安全規(guī)范是面對(duì)網(wǎng)絡(luò)各信息安全相關(guān)的規(guī)范,主要包括業(yè)務(wù)線的隔離、資源的限制、訪問(wèn)的控制以及PSP相關(guān)的設(shè)置;

資源類(lèi)規(guī)范主要指的是資源可見(jiàn)性以及資源的控制與分配;日志規(guī)范是為了所有日志能夠被統(tǒng)一采集和管理所制定的 規(guī)范,比如日志格式、日志分類(lèi)以及日志存放目錄規(guī)范;YAML的規(guī)范是為了保持線網(wǎng)環(huán)境以及測(cè)試環(huán)境的一致性,讓功能更加穩(wěn)定、發(fā)布更加高效和安全而制定的一些列規(guī)范和標(biāo)準(zhǔn)。

規(guī)范標(biāo)準(zhǔn)化是一個(gè)持續(xù)的過(guò)程。我們通過(guò)學(xué)習(xí)、思考以及經(jīng)驗(yàn)汲取來(lái)制定執(zhí)行和完善這個(gè)規(guī)范的過(guò)程,就是我們?cè)诓粩嗵岣哔|(zhì)量、提高管理水平、提高收益的過(guò)程,這也是k8s集群得以持續(xù)發(fā)展的原因。

03


填坑經(jīng)驗(yàn)分享

在制定標(biāo)準(zhǔn)的過(guò)程中,我們踩過(guò)一些坑,以下將分享有關(guān)經(jīng)驗(yàn)供參考。

問(wèn)題:

我們發(fā)現(xiàn)在service轉(zhuǎn)發(fā)過(guò)程中,流量負(fù)載并不均衡,導(dǎo)致單個(gè)pod請(qǐng)求壓力過(guò)高。

解決方案:

1)對(duì)邊緣節(jié)點(diǎn)進(jìn)行了改造,在node上部署了nginx,upstream中的節(jié)點(diǎn)通過(guò)實(shí)時(shí)從consul中獲取服務(wù)的狀態(tài)和ip實(shí)時(shí)更新,以此繞過(guò)了service的流量分發(fā),避免了流量負(fù)載不均的問(wèn)題。k8s集群內(nèi)部服務(wù)模塊之間的轉(zhuǎn)發(fā)也可以通過(guò)類(lèi)似的方法予以實(shí)現(xiàn)。

2) 由于ingress抗壓能力強(qiáng),故使用ingress也能實(shí)現(xiàn)流量負(fù)載均衡的需求,保證ingress到后端的流量是均衡的。

總之,k8s服務(wù)已經(jīng)逐漸成熟,但也仍存在一些問(wèn)題,需要我們開(kāi)發(fā)者共同去解決這些問(wèn)題,讓k8s生態(tài)發(fā)展更健康,讓工作更高效。

PPT獲取方式

關(guān)注【個(gè)推技術(shù)學(xué)院】微信公眾號(hào)

(微信號(hào):getuitech)

回復(fù)關(guān)鍵詞“ k8s”

即可領(lǐng)取Kubernetes專(zhuān)場(chǎng)完整版嘉賓分享PPT!

網(wǎng)頁(yè)題目:個(gè)推在Kubernetes的效率提升舉措揭秘及最佳實(shí)踐解析-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)路徑:http://muchs.cn/article24/djipje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站營(yíng)銷(xiāo)商城網(wǎng)站、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)軟件開(kāi)發(fā)、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)