k8s(一)基礎(chǔ)概念和理解

1.了解 Kubernetes

1.1簡(jiǎn)述功能

  • Kubernetes 是一個(gè)軟件系統(tǒng),它允許你在其上很容易地部署和管理容器化的應(yīng)用婉刀。

  • 它依賴于 Linux容器的特性來(lái)運(yùn)行異構(gòu)應(yīng)用吟温, 而無(wú)須知道這些應(yīng)用的內(nèi)部詳情, 也不需要手動(dòng)將這些應(yīng)用部署到每臺(tái)機(jī)器.

  • 通過(guò) Kubernetes 部署應(yīng)用程序時(shí)突颊,你的 集群包含多少節(jié)點(diǎn)都是 一樣的 鲁豪。集群規(guī)模不會(huì)造成什么差異性,額外的集群節(jié)點(diǎn)只是代表 一 些額外的可用來(lái)部署應(yīng)用的資源

1.2核心功能

  • 開發(fā)者把 一個(gè)應(yīng)用列表提 到主節(jié)點(diǎn)律秃, Kubemetes 會(huì)將它們部署 到集群的工作節(jié)點(diǎn)爬橡。

  • 組件被部署在哪個(gè)節(jié)點(diǎn)對(duì)于開發(fā)者和系統(tǒng)管理員來(lái)說(shuō)都不用 關(guān)心 。

image-20230217161122748.png
  • 開發(fā)者能指定一些應(yīng)用必須一起運(yùn)行棒动, Kubemetes 將會(huì)在一個(gè)工作節(jié)點(diǎn)上部署它們 糙申。

  • 其他的將被分散部署到集群中,但是不管部署在哪兒船惨,它們都能以相同的方式互相通信柜裸。

1.3友好人群

  • 幫助開發(fā)者聚焦核心應(yīng)用功能

Kubemetes 可以被當(dāng)作集群的一 個(gè)操作系統(tǒng)來(lái)看待。它降低了開發(fā)者不得不在他們的應(yīng)用里實(shí)現(xiàn)一些和基礎(chǔ)設(shè)施相關(guān)服務(wù)的心智負(fù)擔(dān)掷漱。

他們現(xiàn)在依賴于 Kubemetes 來(lái)提供這些服務(wù)粘室,包括服務(wù)發(fā)現(xiàn)、擴(kuò)容卜范、負(fù)載均衡、自恢復(fù)鹿榜,甚至領(lǐng)導(dǎo)者的選舉 海雪。

應(yīng)用程序開發(fā)者因此能 集中精力實(shí)現(xiàn)應(yīng)用本身 的功能而不用浪費(fèi)時(shí)間思 索怎樣集成應(yīng)用與基礎(chǔ)設(shè)施 锦爵。

  • 幫助運(yùn)維團(tuán)隊(duì)獲取更高的資源利用率

Kubemetes 將你的容器化應(yīng)用運(yùn)行在集群的某個(gè)地方,井提供信息給應(yīng)用組件來(lái)發(fā)現(xiàn)彼此并保證它們的運(yùn)行 奥裸。

因?yàn)槟愕膽?yīng)用程序不關(guān)心它運(yùn)行在哪個(gè)節(jié)點(diǎn)上,Kubemetes 能在任何時(shí)間遷移應(yīng)用并通過(guò)混合和匹配應(yīng)用來(lái)獲得比手動(dòng)調(diào)度高很多的資源利用率 险掀。

2.Kubernetes 集群架構(gòu)

2.1基礎(chǔ)架構(gòu)

在硬件級(jí)別, 一 個(gè) Kubernetes 集群由很多節(jié)點(diǎn)組成, 這些節(jié)點(diǎn)被分成以下兩種類型 :

  • 主節(jié)點(diǎn) ,它承載著 Kubernetes控制和管理整個(gè)集群系統(tǒng)的控制面板

  • 工作節(jié)點(diǎn)湾宙,它們運(yùn)行用戶實(shí)際部署的應(yīng)用

2.2 控制面板-主節(jié)點(diǎn)

控制面板用于控制集群并使它工作樟氢。它包含多個(gè)組件,組件可以運(yùn)行在單個(gè)主節(jié)點(diǎn)上或者通過(guò)副本分別部署在多個(gè)主節(jié)點(diǎn)以確保高可用性侠鳄。 這些組件是 :

  • Kubernetes API 服務(wù)器埠啃,你和其他控制面板組件都要和它通信

  • Scheculer,它調(diào)度你的應(yīng)用(為應(yīng)用的每個(gè)可部署組件分配一 個(gè)工作節(jié)點(diǎn)〕

  • Controller Manager伟恶,它執(zhí)行集群級(jí)別的功能碴开,如復(fù)制組件、持續(xù)跟蹤工作節(jié)點(diǎn)博秫、處理節(jié)點(diǎn)失敗等

  • etcd潦牛,一個(gè)可靠的分布式數(shù)據(jù)存儲(chǔ),它能持久化存儲(chǔ)集群配置


    image-20230217161949414.png

控制面板的組件持有并控制集群狀態(tài)挡育,但是它們不運(yùn)行你的應(yīng)用程序巴碗。這是由工作節(jié)點(diǎn)完成的 。

2.2工作節(jié)點(diǎn)

工作節(jié)點(diǎn)是運(yùn)行容器化應(yīng)用的機(jī)器即寒。運(yùn)行橡淆、監(jiān)控和管理應(yīng)用服務(wù)的任務(wù)是由以 下組件完成的 :

  • Docker、rtk或其他的容器類型

  • Kubelet蒿叠,它與 API 服務(wù)器通信明垢,并管理它所在節(jié)點(diǎn)的容器

  • Kubernetes Service Proxy (kube-proxy),它負(fù)責(zé)組件之間的負(fù)載均衡網(wǎng)絡(luò)流量

3.運(yùn)行應(yīng)用

image-20230217171600012.png

3.1基礎(chǔ)步驟和意義

  • 為了在 Kubernetes 中運(yùn)行應(yīng)用,首先需要將應(yīng)用打包進(jìn)一個(gè)或多個(gè)容器鏡像市咽, 再將那些鏡像推送到鏡像倉(cāng)庫(kù)

  • 然后將應(yīng)用的描述發(fā)布到 Kubemetes API 服務(wù)器 痊银。描述包括:

    • 諸如容器鏡像或者包含應(yīng)用程序組件的容器鏡像、這些組件如何相互關(guān)聯(lián)

    • 哪些組件需要同時(shí)運(yùn)行在同一個(gè)節(jié)點(diǎn)上和哪些組件不需要同時(shí)運(yùn)行等信息施绎。

    • 此外該描述還包括哪些組件為內(nèi)部或外部客戶提供服務(wù)且應(yīng)該通過(guò)單個(gè)IP地址暴露 溯革,并使其他組件可以發(fā)現(xiàn) 。

3.2描述信息怎么運(yùn)行的容器

  • 當(dāng) API服務(wù)器處理應(yīng)用的描述時(shí),調(diào)度器調(diào)度指定組的容器到可用的工作節(jié)點(diǎn)上,

  • 調(diào)度是基于每組所需的計(jì)算資源,以及調(diào)度時(shí)每個(gè)節(jié)點(diǎn)未分配的資源谷醉。

  • 然后那些節(jié)點(diǎn)上的 Kubelet 指示容器運(yùn)行時(shí)(例如 Docker)拉取所需的鏡像并運(yùn)行容器

3.3保持容器運(yùn)行

  • 一旦應(yīng)用程序運(yùn)行起來(lái)致稀, Kubernetes 就會(huì)不斷地確認(rèn)應(yīng)用程序的部署狀態(tài)始終與你提供的描述相匹配。

  • 如果你指出你需要運(yùn)行五個(gè) web 服務(wù)器實(shí)例俱尼,那么 Kubernetes 總是保持正好運(yùn)行五個(gè)實(shí)例抖单。

  • 如果實(shí)例之一停止了正常工作,比如當(dāng)進(jìn) 程崩潰或停止響應(yīng)時(shí), Kubernetes 將自動(dòng)重啟它 矛绘。

  • 如果整個(gè)工作節(jié)點(diǎn)死亡或無(wú)法訪問(wèn)耍休, Kubernetes 將為在故障節(jié)點(diǎn)上運(yùn)行的所有容器選擇新節(jié)點(diǎn),并在新選擇的節(jié)點(diǎn)上運(yùn)行它們 货矮。

3.4擴(kuò)展副本數(shù)量

  • 當(dāng)應(yīng)用程序運(yùn)行時(shí),可以決定要增加或減少副本量 ,而 Kubemetes將分別增加附加的或停止多余的副本羊精。

  • 甚至可以把決定最佳副本數(shù)目的工作交給 Kubemetes。

  • 它可以根據(jù)實(shí)時(shí)指標(biāo)(如 CPU 負(fù)載囚玫、內(nèi)存消耗喧锦、每秒查詢或應(yīng)用程序公開的任何其他指標(biāo))自動(dòng)調(diào)整副本數(shù) 。

3.5命中移動(dòng)目標(biāo)

  • Kubemetes 可能需要在集群中遷移你的容器抓督。當(dāng)它們運(yùn)行的節(jié)點(diǎn)失敗時(shí)燃少,或者為了給其他容器騰出地方而從節(jié)點(diǎn)移除時(shí)就會(huì)發(fā)生

  • 如果容器向運(yùn)行在集群中的其他容器或者外部客戶端提供服務(wù),那么當(dāng)容器在集群內(nèi)頻繁調(diào)度時(shí)本昏,它們?cè)撊绾握_使用這個(gè)容器?

  • 當(dāng)這些容器被復(fù)制并分布在整個(gè)集群中時(shí)供汛,客戶端如何連接到提供服務(wù)的容器呢?

  • 上述兩條中的的其他容器外部客戶端需要考慮尋找的容器是移動(dòng)的,即移動(dòng)目標(biāo)!涌穆!

  • 為了讓客戶能夠輕松地找到提供特定服務(wù)的容器怔昨,可以告訴 Kubemetes 哪些容器提供相同的服務(wù),

  • 而 Kubemetes將通過(guò)一個(gè)靜態(tài)IP地址暴露所有容器宿稀,并將該地址暴露給集群中運(yùn)行的所有應(yīng)用程序趁舀。

  • 這是通過(guò)環(huán)境變量完成的,但是客戶端也可以通過(guò)良好的DNS查找服務(wù)IP祝沸。

  • kube-proxy 將確保到服務(wù)的連接可跨提供服務(wù)的容器實(shí)現(xiàn)負(fù)載均衡矮烹。服務(wù)的 IP 地址保持不變,

  • 因此客戶端始終可以連接到它的容器罩锐,即使它們?cè)?strong>集群中移動(dòng)奉狈。

4.使用 Kubernetes 的好處

4.1簡(jiǎn)化應(yīng)用程序部署

  • k8s將其所有工作節(jié)點(diǎn)公開為一個(gè)部署平臺(tái),因此應(yīng)用程序開發(fā)人員可以自己開始部署應(yīng)用程序,不需要了解組成集群的服務(wù)器。

  • 現(xiàn)在所有節(jié)點(diǎn)都是一組等待應(yīng)用程序使用它們的計(jì)算資源涩惑。開發(fā)人員通常不關(guān)心應(yīng)用程序運(yùn)行在哪個(gè)服務(wù)器上,只要服務(wù)器能夠?yàn)閼?yīng)用程序提供足夠的系統(tǒng)資源即可仁期。

  • 如果開發(fā)人員因?yàn)楣?jié)點(diǎn)異構(gòu)原因確實(shí)想知道自己的程序跑到了那個(gè)節(jié)點(diǎn),節(jié)點(diǎn)硬件符不符合自己的需求竭恬。

  • 那么可以直接告訴k8s你這個(gè)程序想跑那個(gè)節(jié)點(diǎn)即可

4.2更好地利用硬件

  • 通過(guò)在服務(wù)器上裝配 K8s跛蛋,并使用它運(yùn)行應(yīng)用程序而不是手動(dòng)運(yùn)行它們, 你己經(jīng)將應(yīng)用程序與基礎(chǔ)設(shè)施分離開來(lái)痊硕。

  • 當(dāng)你告訴 K8s運(yùn)行你的應(yīng)用程序時(shí),你在讓它根據(jù)應(yīng)用程序的資源需求描述和每個(gè)節(jié)點(diǎn)上的可用資源選擇最合適的節(jié)點(diǎn)來(lái)運(yùn)行你的應(yīng)用程序赊级。

  • 通過(guò)使用容器,不再用把這個(gè)應(yīng)用綁定到一個(gè)特定的集群節(jié)點(diǎn),而允許應(yīng)用程序在任何時(shí)候都在集群中自由遷移

  • 所以在集群上運(yùn)行的不同應(yīng)用程序組件可以被混合和匹配來(lái)緊密打包到集群節(jié)點(diǎn)。這將確保節(jié)點(diǎn)的硬件資源得到盡可能好的利用岔绸。

  • 可以隨時(shí)在集群中移動(dòng)應(yīng)用程序的能力,使得 Kubemetes 可以比人工更好地利用基礎(chǔ)設(shè)施

4.3健康檢查和自修復(fù)

  • K8s 監(jiān)控你的應(yīng)用程序組件和它們運(yùn)行的節(jié)點(diǎn)理逊,并在節(jié)點(diǎn)出現(xiàn)故障時(shí)自動(dòng)將它們重新調(diào)度到其他節(jié)點(diǎn)橡伞。

  • 運(yùn)維不用去重新部署應(yīng)用,專注修復(fù)節(jié)點(diǎn)本身挡鞍,然后將其修好送回硬件資源池

4.4自動(dòng)擴(kuò)容

  • Kubemetes 監(jiān)視每個(gè)應(yīng)用程序使用 的資源骑歹,并不斷調(diào)整每個(gè)應(yīng)用程序 的運(yùn)行實(shí)例數(shù) 量预烙。

  • 如果 Kubemetes 運(yùn)行在 云基礎(chǔ)設(shè)施上墨微,在這些基礎(chǔ)設(shè)施中,添加額外的節(jié)點(diǎn)就 像通過(guò)云供應(yīng)商的 API 請(qǐng)求它們一樣簡(jiǎn)單

  • 那么 Kubemetes 甚至可以根據(jù)部署的應(yīng)用程序的需要自動(dòng)地將整個(gè)集群規(guī)模放大或縮小 扁掸。

5.小結(jié)

  • 單體應(yīng)用程序更容易部署翘县,但隨著時(shí)間的推移更難維護(hù),并且有時(shí)難以擴(kuò)展谴分。

  • 基于微服務(wù)的應(yīng)用程序體系結(jié)構(gòu)使每個(gè)組件的開發(fā)更容易锈麸,但是很難配置和部署它們作為單個(gè)系統(tǒng)工作。

  • Linux 容器提供的好處與虛擬機(jī)差不 多牺蹄,但它們輕量許多 忘伞,并且允許更好地利用硬件 。

  • 通過(guò)允許更簡(jiǎn)單快捷地將容器化應(yīng)用和其操作系統(tǒng)環(huán)境 一起管理沙兰, Docker改進(jìn)了現(xiàn)有的 Linux 容器技術(shù) 氓奈。

  • Kubernetes將整個(gè)數(shù)據(jù)中心暴露為用于運(yùn)行應(yīng)用程序的單個(gè)計(jì)算資源。

  • 開發(fā)人員可以通過(guò)Kubernetes部署應(yīng)用程序鼎天,而無(wú)須系統(tǒng)管理員的幫助舀奶。

  • 通過(guò)讓Kubernetes自動(dòng)地處理故障節(jié)點(diǎn), 系統(tǒng)管理員可以睡得更好斋射。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末育勺,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子罗岖,更是在濱河造成了極大的恐慌涧至,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桑包,死亡現(xiàn)場(chǎng)離奇詭異南蓬,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)捡多,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門蓖康,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人垒手,你說(shuō)我怎么就攤上這事蒜焊。” “怎么了科贬?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵泳梆,是天一觀的道長(zhǎng)鳖悠。 經(jīng)常有香客問(wèn)我,道長(zhǎng)优妙,這世上最難降的妖魔是什么乘综? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮套硼,結(jié)果婚禮上卡辰,老公的妹妹穿的比我還像新娘。我一直安慰自己邪意,他們只是感情好九妈,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著雾鬼,像睡著了一般萌朱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上策菜,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天晶疼,我揣著相機(jī)與錄音,去河邊找鬼又憨。 笑死翠霍,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的竟块。 我是一名探鬼主播壶运,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼浪秘!你這毒婦竟也來(lái)了蒋情?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤耸携,失蹤者是張志新(化名)和其女友劉穎棵癣,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體夺衍,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡狈谊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了沟沙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片河劝。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖矛紫,靈堂內(nèi)的尸體忽然破棺而出赎瞎,到底是詐尸還是另有隱情,我是刑警寧澤颊咬,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布务甥,位于F島的核電站牡辽,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏敞临。R本人自食惡果不足惜态辛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望挺尿。 院中可真熱鬧奏黑,春花似錦、人聲如沸票髓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)洽沟。三九已至,卻和暖如春蜗细,著一層夾襖步出監(jiān)牢的瞬間裆操,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工炉媒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留踪区,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓吊骤,卻偏偏與公主長(zhǎng)得像缎岗,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子白粉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容