K8S是第一個(gè)將“一切以服務(wù)為中心,美國(guó)站群服務(wù)器 亞洲服務(wù)器,一切圍繞服務(wù)運(yùn)轉(zhuǎn)”作為指導(dǎo)思想的創(chuàng)新型產(chǎn)品,它的功能和架構(gòu)設(shè)計(jì)自始至終都遵循了這一指導(dǎo)思想,構(gòu)建在K8S上的系統(tǒng)不僅可以獨(dú)立運(yùn)行在物理機(jī)、虛擬機(jī)集群或者企業(yè)私有云上,也可以被托管在公有云中。
微服務(wù)架構(gòu)的核心是將一個(gè)巨大的單體應(yīng)用拆分為很多小的互相連接的微服務(wù),一個(gè)微服務(wù)背后可能有多個(gè)實(shí)例副本在支撐。單體應(yīng)用微服務(wù)化以后,服務(wù)之間必然會(huì)有依賴關(guān)系,在發(fā)布時(shí),若每個(gè)服務(wù)都單獨(dú)啟動(dòng)會(huì)非常痛苦,簡(jiǎn)單地說包括一些登錄服務(wù)、支付服務(wù),若想一次全部啟動(dòng),此時(shí)必不可少要用到編排的動(dòng)作。
K8S完美地解決了調(diào)度,負(fù)載均衡,集群管理、有狀態(tài)數(shù)據(jù)的管理等微服務(wù)面臨的問題,成為企業(yè)微服務(wù)容器化的首選解決方案。使用K8S就是在全面擁抱微服務(wù)架構(gòu)。
在社區(qū)不久前的線上活動(dòng)交流中,圍繞金融行業(yè)基于K8S的容器云的微服務(wù)解決方案、金融行業(yè)微服務(wù)架構(gòu)設(shè)計(jì)、容器云整體設(shè)計(jì)架構(gòu)等方面的問題進(jìn)行了充分的討論,得到了多位社區(qū)專家的支持。大家針對(duì)K8S容器云和微服務(wù)結(jié)合相關(guān)的問題,體現(xiàn)出了高度的參與熱情。在此,對(duì)大家關(guān)注的問題以及針對(duì)這些問題各位專家的觀點(diǎn)總結(jié)如下:
一、K8S容器云部署實(shí)踐篇
Q1:現(xiàn)階段容器云部署框架是什么?
A1:
• 在DMZ和內(nèi)網(wǎng)分別部署彼此獨(dú)立的2套Openshift,分別為內(nèi)網(wǎng)和DMZ區(qū)兩個(gè)網(wǎng)段,兩套環(huán)境彼此隔離。
• DMZ區(qū)的Openshift部署對(duì)外發(fā)布的應(yīng)用,負(fù)責(zé)處理外網(wǎng)的訪問
• 內(nèi)網(wǎng)的Openshift部署針對(duì)內(nèi)網(wǎng)的應(yīng)用,僅負(fù)責(zé)處理內(nèi)網(wǎng)的訪問
-權(quán)限管理
對(duì)于企業(yè)級(jí)的應(yīng)用平臺(tái)來說,會(huì)有來自企業(yè)內(nèi)外不同角色的用戶,所以靈活的、細(xì)粒度的、可擴(kuò)展的權(quán)限管理是必不可少的。OCP從設(shè)計(jì)初期就考慮到企業(yè)級(jí)用戶的需求,所以在平臺(tái)內(nèi)部集成了標(biāo)準(zhǔn)化的認(rèn)證服務(wù)器,并且定義了詳細(xì)的權(quán)限策略和角色。
1. 認(rèn)證:
OCP平臺(tái)的用戶是基于對(duì)OCP API的調(diào)用權(quán)限來定義的,由于OCP所有的操作都是基于API的,也就說用戶可以是一個(gè)開發(fā)人員或者管理員,可以和OCP進(jìn)行交互。OCP內(nèi)置了一個(gè)基于OAuth的通用身份認(rèn)證規(guī)范的服務(wù)器。這個(gè)OAuth服務(wù)器可以通過多種不同類型的認(rèn)證源對(duì)用戶進(jìn)行認(rèn)證。
2. 鑒權(quán):
權(quán)策略決定了一個(gè)用戶是否具有對(duì)某個(gè)對(duì)象的操作權(quán)限。管理員可以設(shè)置不同規(guī)則和角色,可以對(duì)用戶或者用戶組賦予一定的角色,角色包含了一系列的操作規(guī)則。
除了傳統(tǒng)的認(rèn)證和鑒權(quán)功能,OCP還提供了針對(duì)pod的細(xì)粒度權(quán)限控SCC(security context constraints),可以限制pod具備何種類型的權(quán)限,比如容器是否可以運(yùn)行在特權(quán)模式下、是否可以掛在宿主機(jī)的目錄、是否可以使用宿主機(jī)的端口、是否可以以root用戶運(yùn)行等。
-多租戶管理
租戶是指多組不同的應(yīng)用或者用戶同時(shí)運(yùn)行在一個(gè)基礎(chǔ)資源池之上,實(shí)現(xiàn)軟件、硬件資源的共享,為了安全需求,平臺(tái)需要提供資源隔離的能力。
在OCP中,project是一個(gè)進(jìn)行租戶隔離的概念,它來源于kubernetes的namespace,并對(duì)其進(jìn)行了功能的擴(kuò)展。利用Project,OCP平臺(tái)從多個(gè)層面提供了多租戶的支持。
1. 權(quán)限控制。通過OCP平臺(tái)細(xì)粒度的權(quán)限管理機(jī)制,管理員可以對(duì)不同的用戶和組設(shè)置不同project的權(quán)限,不同用戶登錄以后只能操作和管理特定的project
2. 網(wǎng)絡(luò)隔離。OCP平臺(tái)使用openvswitch來管理內(nèi)部的容器網(wǎng)絡(luò),提供兩種類型的網(wǎng)絡(luò)模式,一種是集群范圍內(nèi)互通的平面網(wǎng)絡(luò),另一種是project級(jí)別隔離的網(wǎng)絡(luò)。每個(gè)project都有一個(gè)虛擬網(wǎng)絡(luò)ID(VNID),不同VNID的流量被openvswitch自動(dòng)隔離。所以不同項(xiàng)目之間的服務(wù)在網(wǎng)絡(luò)層不能互通。
3. Router隔離。Router是OCP平臺(tái)一個(gè)重要軟件資源,它提供了外部請(qǐng)求導(dǎo)入OCP集群內(nèi)部的能力。OCP提供了Router分組的功能,不同的project可以使用獨(dú)立的Router,不互相干擾,這樣就避免了由于某些應(yīng)用流量過大時(shí)對(duì)其他應(yīng)用造成干擾。
物理資源池隔離。在多租戶的環(huán)境中,為了提高資源的利用率一般情況下物理資源池是共享的,但是有些用戶也會(huì)提供獨(dú)占資源池的需求。針對(duì)這種類型的需求,OCP平臺(tái)利用nodeSelector的功能可以將基礎(chǔ)設(shè)施資源池劃分給特定的project獨(dú)享,實(shí)現(xiàn)從物理層面的隔離。
-日志和監(jiān)控
(1)傳統(tǒng)應(yīng)用日志
有別于當(dāng)前流行的容器應(yīng)用,的傳統(tǒng)應(yīng)用同時(shí)一個(gè)中間件會(huì)運(yùn)行多個(gè)應(yīng)用,且應(yīng)用通過log4j等機(jī)制保存在文件中方便查看和排錯(cuò)。因?yàn)槿萜鬟\(yùn)行的特性,對(duì)于這部分的日志我們需要持久化到外置存儲(chǔ)中。
日志的分類如下:
• 中間件日志
• dump文件
• 應(yīng)用日志
日志保存在計(jì)算節(jié)點(diǎn)上掛載的NFS存儲(chǔ)。為了規(guī)范和方便查找。日志將會(huì)按OCP平臺(tái)中的namespace建立目錄,進(jìn)行劃分。
(2)新應(yīng)用日志