站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        Kubernetes集群概述/體系結(jié)構(gòu)/相關(guān)核心概念

        Kubernetes是什么?

        業(yè)界簡稱為:K8S,是首字母和末尾之母之間有8個字母,所以叫K8S,不知為何這樣起名?

        1、它是一個全新的基于容器技術(shù)的分布式架構(gòu)方案。Kubernetes是谷歌嚴(yán)格保密十幾年的秘密武器—Borg的一個開源版本,據(jù)說在GG員工都簽署了保密協(xié)議,即使離職也不能泄露機(jī)密(業(yè)界大數(shù)據(jù)框架:Hadoop,也是受GG公開文獻(xiàn)啟發(fā)GFS和BigTable )。

        2、若我們的系統(tǒng)設(shè)計(jì)遵循Kubernetes的設(shè)計(jì)思想,可以說那些傳統(tǒng)系統(tǒng)架構(gòu)中和業(yè)務(wù)沒有多大關(guān)系的底層代碼或功能模塊,可以消除,我們不必再為應(yīng)用的負(fù)載均衡和部署等問題而煩惱

        3、Kubernetes是一個開放的開放平臺。有Google、RedHat等開源基礎(chǔ)設(shè)施的大碗們共同發(fā)起了一個為:CNCF(Cloud Native Computing Foundation)的基金會。

        4、Kubernetes是一個完備的分布式系統(tǒng)支撐平臺。

        為什么要用Kubernetes?

        1、可以和微服務(wù)完美結(jié)構(gòu),構(gòu)成微服務(wù)架構(gòu)。

        2、K8S內(nèi)的服務(wù)的彈性擴(kuò)容機(jī)制可以應(yīng)對突發(fā)流量

        3、K8S架構(gòu)的靈活及超強(qiáng)的橫向擴(kuò)容能力可以提高我們的競爭力

        4、基于容器技術(shù),構(gòu)建公司DevOps、CI/CD、持續(xù)交付,縮短開發(fā)周期

        Kuberntes的體系架構(gòu)

        下圖為K8S的體系架構(gòu)

        Kubernetes集群概述/體系結(jié)構(gòu)/相關(guān)核心概念

        Kubernetes的主要核心組件:

        在上圖中的左側(cè)節(jié)點(diǎn)則是Master節(jié)點(diǎn),右側(cè)是Node節(jié)點(diǎn):

        Master節(jié)點(diǎn)的主要作用是控制和管理整個集群的狀態(tài)并接收外部用戶的操作請求。它主要運(yùn)行三中服務(wù)進(jìn)程,分別是:kube-apiserver、kube-scheduler、kube-controller-manager,具體作用如下:

        kube-apiserver

        kube-apiserver是整個Kubernetes集群的核心,也是部署Kubernetes最先啟動的組件,其他所有的組件都會在啟動時接入這個服務(wù),主要是提供資源操作的統(tǒng)一入口, 通過RestAPI將集群的狀態(tài)信息存儲etcd集群。

        kube-scheduler

        主要負(fù)責(zé)資源的調(diào)度,根據(jù)集群當(dāng)前的資源使用情況及復(fù)雜的調(diào)度算法將Pod調(diào)度到適合運(yùn)行或特定的服務(wù)節(jié)點(diǎn)上。

        kube-controller-manager

        kube-controller-manager服務(wù)負(fù)責(zé)管理K8S集群中各種資源的狀態(tài),諸如:故障檢測、滾動更新等。

        Node節(jié)點(diǎn)是實(shí)際執(zhí)行用戶任務(wù)的地方,其上有兩種服務(wù)進(jìn)程,分別是:kube-proxy和kubelet,具體作用如下:

        kube-proxy

        設(shè)計(jì)kube-proxy服務(wù)是為了解決從Node節(jié)點(diǎn)中的Pod對K8S特定Service訪問時的路由問題,每當(dāng)K8S創(chuàng)建一個Service的Endpoint,各個Node節(jié)點(diǎn)上的kube-proxy進(jìn)程就會修改節(jié)點(diǎn)系統(tǒng)的iptables規(guī)則,使得當(dāng)該節(jié)點(diǎn)上的Pod訪問相應(yīng)Endpoint的虛擬Ip和端口時,請求會被分發(fā)到正確的節(jié)點(diǎn)和容器進(jìn)行處理

        kubelet

        kubelet直接負(fù)責(zé)節(jié)點(diǎn)上容器的生命周期,同時也負(fù)責(zé)Volume和網(wǎng)絡(luò)(CNI)的管理

        其他的核心組件:

        etcd:保存集群的狀態(tài),整個集群的狀態(tài)數(shù)據(jù)都存于此,因此構(gòu)建K8S集群時,etcd也最好是集群的,同時要對etcd的數(shù)據(jù)進(jìn)行備份

        Heapster:  提供資源監(jiān)控

        kube-dns:負(fù)責(zé)為整個集群提供DNS服務(wù)

        Kuberntes核心概念

        在Kubernetes集群中,服務(wù)器的角色分為Master和Node,此兩種不同角色分別運(yùn)行著不同的服務(wù)進(jìn)程。

        Pod

        Pod表示的是一個或多個容器的組合,它是K8S最基本的調(diào)度和操作單位,每個Pod里都有一個特殊的容器,被稱為:”根容器“的pause容器。

        在同一個Pod中的容器總會被調(diào)度和部署到同一個節(jié)點(diǎn)上,并共享相同的數(shù)據(jù)卷和網(wǎng)絡(luò)棧,也即是Pod里的多個容器能夠同時掛載同一個外部數(shù)據(jù)卷,這對于部署緊密的服務(wù)是十分有作用的。

        Label

        Labe(標(biāo)簽)其實(shí)是一個K-V的鍵值對形式,用于標(biāo)記Pod、Node、Namespace或其他任何資源對象的鍵值對。主要用于在查詢或選擇時對資源進(jìn)行條件過濾。

        Service

        Service是Kubernetes集群對外提供的用戶業(yè)務(wù)功能抽象,表現(xiàn)為一個獨(dú)立的虛擬IP和端口,其實(shí)這個Service就是我們經(jīng)常提起的微服務(wù)架構(gòu)中的一個微服務(wù)。

        其實(shí)它的后端是由單個Pod或多個Pod的副本組成的容器結(jié)合,有K8S提供實(shí)際訪問的路由能力。通過這層,K8S能夠在后端完成諸如:服務(wù)和切換、負(fù)載均衡、依據(jù)資源情況的節(jié)點(diǎn)調(diào)度等。

        那這個Service和RC、Pod是什么關(guān)系呢?見下圖

        Kubernetes集群概述/體系結(jié)構(gòu)/相關(guān)核心概念

        若公司有上百個或上千Service,這些Service之間有鏈路調(diào)用關(guān)系,那如何進(jìn)行監(jiān)控這些服務(wù)呢?

        一是在這些service中打印日志信息,通過ELK或EFK進(jìn)行收集分析,二是通過服務(wù)網(wǎng)格來構(gòu)建(Service Mesh)監(jiān)控

        RC(Replication Controller)

        RC是在早期K8S版本中用于管理Pod副本對象的概念,其實(shí)其也包含了ReplicaSet和Deployment的作用,但不具有部署版本管理的功能,所以在1.2以后的版本中,建議使用Deployment和ReplicaSet替代它,不過優(yōu)先使用Deployment

        Deployment

        Deployment是K8S在1.2版本引入的新概念,用于更好的解決Pod的編排問題。其實(shí)Deployment在內(nèi)部使用了Replica Set來實(shí)現(xiàn)的,也即是說:Deployment所保存的部署描述信息是用來創(chuàng)建ReplicaSet對象,每個Deployment對象都會對應(yīng)一個運(yùn)行著的ReplicaSet對象,后者實(shí)際管理Pod副本的運(yùn)行:

        大致方向如下:

        Deployment->ReplicaSet->Pod

        Ingress

        Ingress本質(zhì)上是一個負(fù)載均衡,它被用來將集群中的用戶服務(wù)通過統(tǒng)一的IP地址暴露給外界。

        Namespace

        Namespace(命名空間)在很多情況下用于實(shí)現(xiàn)多租戶的資源隔離,K8S中除了Node和Label以外的大多數(shù)資源,例如:Pod,Service、LimitRange等,都是在創(chuàng)建特定Namespace里的(default是默認(rèn)的namespace)

        sts(StatefulSet)

        STS是在Kubernetes1.5版本前稱為PetSet,用于部署和運(yùn)行有持久化狀態(tài)服務(wù)的方式。在K8S中,Pod的管理對象RC、Deployment、Job都是面向無狀態(tài)的服務(wù),利用STS可以部署MySQL集群、MongoDB集群、ZK集群、Redis集群等

        Job

        Job是用來批量執(zhí)行一次性任務(wù)。每個Job同樣會對應(yīng)一個或多個Pod,這些Pod執(zhí)行是有 時間限制的,程序結(jié)束后,Job將被標(biāo)記為成功或失敗。

        Volume

        Volume(存儲卷)是Pod中能夠被多個容器訪問的共享目錄。

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 精品国产第一国产综合精品 | 国产成人精品免高潮在线观看 | 亚洲国产精品成人久久蜜臀 | 亚洲日韩欧美制服精品二区| 国产91精品黄网在线观看| 国产精品99精品久久免费| 午夜精品久久久久久影视777| 午夜精品免费在线观看| 99久久99这里只有免费费精品| 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 久久久精品一区二区三区| 国产精品一区二区av| 最新亚洲精品国自产在线观看| 久久久精品人妻一区二区三区四 | 在线观看日韩精品| 国产精品欧美亚洲韩国日本| 国产精品揄拍100视频| 日韩精品久久久久久久电影蜜臀| 精品久久久久久无码专区不卡| 精品91自产拍在线观看| 国产亚洲精品国产| 国产精品偷伦视频观看免费| 日韩一区精品视频一区二区| 精品无码久久久久久久久久| 国产精品国产三级国产a| 四虎在线精品视频一二区| 国产精品久久久久久福利漫画| 国产l精品国产亚洲区在线观看| 久久亚洲精品人成综合网| 欧美精品成人3d在线| 国产精品亚洲高清一区二区| 国产成人综合精品一区| 成人国产精品一区二区视频| 51久久夜色精品国产| 国产A级毛片久久久精品毛片| 国产成人精品视频2021| 成人精品一区二区三区免费看 | 夜夜爽一区二区三区精品| 在线精品亚洲一区二区| 一本精品中文字幕在线| 十八18禁国产精品www|