01-Kubernetes 組件介紹

當(dāng)你部署完 Kubernetes, 即擁有了一個(gè)完整的集群赁温。

一個(gè) Kubernetes 集群由一組被稱作節(jié)點(diǎn)的機(jī)器組成坛怪。這些節(jié)點(diǎn)上運(yùn)行 Kubernetes 所管理的容器化應(yīng)用。集群具有至少一個(gè)工作節(jié)點(diǎn)股囊。

工作節(jié)點(diǎn)托管作為應(yīng)用負(fù)載的組件的 Pod 酝陈。控制平面管理集群中的工作節(jié)點(diǎn)和 Pod 毁涉。 為集群提供故障轉(zhuǎn)移和高可用性沉帮,這些控制平面一般跨多主機(jī)運(yùn)行,集群跨多個(gè)節(jié)點(diǎn)運(yùn)行贫堰。

本節(jié)概述了交付正常運(yùn)行的 Kubernetes 集群所需的各種組件穆壕。

image-20220411103556378.png

1、控制平面組件(Control Plane Components--master)

從上面的構(gòu)架圖可以看出來整個(gè)kubernetes集群分為control plane(master)和node節(jié)點(diǎn)兩部份其屏。master組件是集群的“腦力”輸出者喇勋。它維護(hù)有kubernetesr 的所有對(duì)象記錄,負(fù)責(zé)持續(xù)管理對(duì)象狀態(tài)并響應(yīng)集群中各種資源對(duì)象的管理操作川背,以及確保各資源對(duì)象的實(shí)際狀態(tài)與所需狀態(tài)相匹配贰拿。主要由API Server(kube-apiserver)、Control Manager(kube-controller-manager)和Scheduler(kube-scheduler)這3個(gè)組件熄云。以及一個(gè)用于集群狀態(tài)存儲(chǔ)的etcd存儲(chǔ)服務(wù)組成膨更。

1.1 API Server(kube-apiserver)

kube-apiserver

API Server是 Kubernetes控制平臺(tái)的前端。支持不同類型應(yīng)用的生命周期編排缴允,包括部署荚守、縮放和滾動(dòng)更新等。還是整個(gè)集群的網(wǎng)關(guān)接口,由kube-apiserver守護(hù)程序運(yùn)行為服務(wù)练般。通過HTTP/HTTPS協(xié)議將RESTful API公開給用戶矗漾。是發(fā)往集群的所有REST操作命令的接入點(diǎn),并提供認(rèn)證薄料、授權(quán)敞贡、訪問控制、API注冊(cè)和發(fā)現(xiàn)等所有的REST請(qǐng)求摄职。并將結(jié)果狀態(tài)持久存儲(chǔ)于集群狀態(tài)存儲(chǔ)系統(tǒng)(etcd)中誊役。

kube-apiserver 支持同時(shí)提供 https(默認(rèn)監(jiān)聽在 6443 端口)和 http API(默認(rèn)監(jiān)聽在 127.0.0.1 的 8080 端口),其中 http API 是非安全接口琳钉,不做任何認(rèn)證授權(quán)機(jī)制,不建議生產(chǎn)環(huán)境啟用蛛倦。兩個(gè)接口提供的 REST API 格式相同

1.2 Control Manager(kube-controller-manager)

kube-controller-manager

Control Manager負(fù)責(zé)實(shí)現(xiàn)用戶通過API Server提交的終態(tài)聲明歌懒。它通過一系列操作步驟驅(qū)動(dòng)API對(duì)象的當(dāng)前狀態(tài)逼近或同于期望狀態(tài)。Kubernetes提供了驅(qū)動(dòng)Node溯壶、Pod及皂、Server、Endpoint且改、ServiceAccount和Token等數(shù)十種類型的API對(duì)象的控制器验烧。從邏輯上講,每個(gè)控制器都是一個(gè)單獨(dú)的進(jìn)程又跛, 但是為了降低復(fù)雜性碍拆,它們都被編譯到同一個(gè)可執(zhí)行文件,并在一個(gè)進(jìn)程中運(yùn)行慨蓝。

控制器包括:

  • 節(jié)點(diǎn)控制器(Node Controller): 負(fù)責(zé)在節(jié)點(diǎn)出現(xiàn)故障時(shí)進(jìn)行通知和響應(yīng)

  • 任務(wù)控制器(Job controller): 監(jiān)測(cè)代表一次性任務(wù)的 Job 對(duì)象感混,然后創(chuàng)建 Pods 來運(yùn)行這些任務(wù)直至完成

  • 端點(diǎn)控制器(Endpoints Controller): 填充端點(diǎn)(Endpoints)對(duì)象(即加入 Service 與 Pod)

  • 服務(wù)帳戶和令牌控制器(Service Account & Token Controllers): 為新的命名空間創(chuàng)建默認(rèn)帳戶和 API 訪問令牌

  • pod高可用機(jī)制

    1、node moniter period節(jié)點(diǎn)監(jiān)視5秒

    Controller-manager控制器每間隔5秒檢查一次節(jié)點(diǎn)的狀態(tài)

    如果controller-manager控制器沒有收到節(jié)點(diǎn)的心跳礼烈,則將該node節(jié)點(diǎn)標(biāo)記為不可達(dá)弧满。

    2、node monitor grace period:節(jié)點(diǎn)監(jiān)視器寬限期為40秒

    controller-manager將在標(biāo)記為無法訪問之前等待40秒;

    3此熬、pod eviction timeout: pod驅(qū)逐超時(shí)時(shí)間5分鐘

    如果該node節(jié)點(diǎn)被標(biāo)記為無法訪問后5分鐘還沒有恢復(fù)庭呜,controller-manager會(huì)刪除當(dāng)前node節(jié)點(diǎn)的所有pod并在其他節(jié)點(diǎn)重建這些pod.

1.3 kube-scheduler

kube-scheduler

Scheduler是指為API Server 接收到的每一個(gè)pod創(chuàng)建請(qǐng)求滑进,并在集群中為其匹配出一個(gè)最佳的工作節(jié)點(diǎn)為。調(diào)度決策考慮的因素包括單個(gè) Pod 和 Pod 集合的資源需求募谎、硬件/軟件/策略約束扶关、親和性和反親和性規(guī)范、數(shù)據(jù)位置近哟、工作負(fù)載間的干擾和最后時(shí)限等特性驮审。

1.4 etcd

etcd

kubernetes集群的所有狀態(tài)信息都需要持久存儲(chǔ)于存儲(chǔ)系統(tǒng)etcd中。etcd是由CoreOS基于Raft協(xié)議開發(fā)的分布式鍵值存儲(chǔ)吉执》枰可用于服務(wù)發(fā)現(xiàn)。共享配置以及一致性保障戳玫。生產(chǎn)環(huán)境中應(yīng)該以etcd集群的方式運(yùn)行以確保其服務(wù)可用性熙掺,并需要制周期備份策略以確保數(shù)據(jù)安全可靠。

etcd還為其存儲(chǔ)的數(shù)據(jù)提供了監(jiān)聽(watch)機(jī)制咕宿。用于監(jiān)視和推送變更币绩,API Server是kubernetes集群中唯一能夠與etcd通信的組件。封裝了這種監(jiān)聽機(jī)制府阀。并借此同其他各組件高效協(xié)同缆镣。

2、Node組件

Node組件是集群中的“體力”輸出者试浙,因而一個(gè)集群通常會(huì)有多個(gè)Node以提供足夠的承載力來運(yùn)行容器化應(yīng)用和其他工作負(fù)載董瞻。

2.1 kubelet

kubelet

kubelet是運(yùn)行于每個(gè)node節(jié)點(diǎn)之上的“節(jié)點(diǎn)代理”服務(wù),負(fù)責(zé)維護(hù)容器的生命周期田巴,同時(shí)也負(fù)責(zé)Volume(CSI)和網(wǎng)絡(luò)(CNI)的管理钠糊;其主要功能概括如下:

持續(xù)監(jiān)聽node的健康狀態(tài)并向master匯報(bào)。

基于用戶自定義的探針進(jìn)行存活狀態(tài)探測(cè)壹哺,并在任何Pod出現(xiàn)問題時(shí)將其重建為新實(shí)例抄伍。

準(zhǔn)備pod所需的數(shù)據(jù)卷

返回pod的狀態(tài)

在node節(jié)點(diǎn)執(zhí)行容器的健康檢測(cè)

2.2 容器運(yùn)行時(shí)環(huán)境

Pod是一組容器組成的集合并包含這些容器的管理機(jī)制。安并未額外定義進(jìn)程的邊界或其他更多抽象管宵,因此真正負(fù)責(zé)運(yùn)行容器的依然是底層的容器運(yùn)行時(shí)截珍。kubelet通過CRI(容器運(yùn)行時(shí)接口)可支持多種類型的OCI容器運(yùn)行時(shí),例如docker箩朴、 containerd笛臣、CRI-O、runC隧饼、fraki和kata Containers等

2.3 kube-proxy

kube-proxy

kube-proxy也是需要運(yùn)行于集群中每個(gè)節(jié)點(diǎn)之上的服務(wù)進(jìn)程沈堡。它把API Server上的Service資源對(duì)象轉(zhuǎn)換為當(dāng)前節(jié)點(diǎn)上的iptables或與ipvs規(guī)則。這些規(guī)則能夠?qū)⒛切┌l(fā)往該Service對(duì)象ClusterIP的流量分發(fā)至它后端的Pod端點(diǎn)上燕雁。kube-proxy是kubernetes的核心網(wǎng)絡(luò)組件诞丽。它本質(zhì)上更象是Pod的代理及負(fù)載均衡器鲸拥。負(fù)責(zé)確保集群中Node、Service和Pod對(duì)象之間的有效通信 僧免。

kube-proxy 不同的版本可支持三種工作模式

UserSpace: kubernetes V1.1之前使用刑赶,V1.2及以后就已淘汰

IPtables: Kubernetes 1.1版本開始支持。1.2開始為默認(rèn)

IPVS: kubernetes 1.9引入到1.11為正式版本懂衩,需要安裝ipvadm撞叨、ipset工具包和加載ip_vs內(nèi)核模塊家妆。

2.4 kubectl

kubectl 概述

是一個(gè)通過命令行對(duì)kubernetes集群管理的工具

kubectl [command] [TYPE] [NAME] [flags]

2.4 dashboard

基于Web的用戶接口牙甫,用于可視化k8s集群。dashborad可用于獲取集群中資源對(duì)象的詳細(xì)信息椿息,Dashboard提供GUI法希,作為運(yùn)維人員枷餐,使用kubectl命令行工具管理足矣

2.5 coredns

CoreDNS負(fù)責(zé)為整個(gè)集群提供DNS服務(wù),它自1.11版本起默認(rèn)使用CoreDNS苫亦,一種靈活毛肋,可擴(kuò)展的DNS服務(wù),之前的版本用到的是kube-dns項(xiàng)目屋剑,SkyDNS則是更早一代的解決方案润匙。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市唉匾,隨后出現(xiàn)的幾起案子孕讳,更是在濱河造成了極大的恐慌,老刑警劉巖肄鸽,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卫病,死亡現(xiàn)場(chǎng)離奇詭異油啤,居然都是意外死亡典徘,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門益咬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來逮诲,“玉大人,你說我怎么就攤上這事幽告∶佛校” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵冗锁,是天一觀的道長(zhǎng)齐唆。 經(jīng)常有香客問我,道長(zhǎng)冻河,這世上最難降的妖魔是什么箍邮? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任茉帅,我火速辦了婚禮,結(jié)果婚禮上锭弊,老公的妹妹穿的比我還像新娘堪澎。我一直安慰自己,他們只是感情好味滞,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布樱蛤。 她就那樣靜靜地躺著,像睡著了一般剑鞍。 火紅的嫁衣襯著肌膚如雪昨凡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天攒暇,我揣著相機(jī)與錄音土匀,去河邊找鬼。 笑死形用,一個(gè)胖子當(dāng)著我的面吹牛就轧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播田度,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼妒御,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了镇饺?” 一聲冷哼從身側(cè)響起乎莉,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎奸笤,沒想到半個(gè)月后惋啃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡监右,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年边灭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片健盒。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绒瘦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出扣癣,到底是詐尸還是另有隱情惰帽,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布父虑,位于F島的核電站该酗,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏士嚎。R本人自食惡果不足惜呜魄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一烁焙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧耕赘,春花似錦骄蝇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至册招,卻和暖如春岔激,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背是掰。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來泰國打工虑鼎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人键痛。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓炫彩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親絮短。 傳聞我的和親對(duì)象是個(gè)殘疾皇子江兢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348