大佬博客
Kubernetes(通常縮寫(xiě)為K8s)是一個(gè)用于自動(dòng)化容器化應(yīng)用程序部署、管理和擴(kuò)展的開(kāi)源容器編排平臺(tái)。它的構(gòu)造非常復(fù)雜,由多個(gè)核心組件和附加組件組成,共同協(xié)作以實(shí)現(xiàn)容器集群的高可用性和可伸縮性。以下是Kubernetes的主要組件和其構(gòu)造:
-
Master節(jié)點(diǎn)(控制平面):
- kube-apiserver:API服務(wù)器是Kubernetes的控制平面組件之一,充當(dāng)所有控制平面組件和用戶命令的入口點(diǎn)。它公開(kāi)了Kubernetes API,允許外部和內(nèi)部組件與集群交互。
- etcd:etcd是一個(gè)高度可用的鍵值存儲(chǔ),用于保存集群的所有配置數(shù)據(jù),包括應(yīng)用程序配置、節(jié)點(diǎn)信息、服務(wù)發(fā)現(xiàn)等。
- kube-scheduler:調(diào)度器負(fù)責(zé)決定在哪個(gè)節(jié)點(diǎn)上運(yùn)行新創(chuàng)建的Pod。它考慮了節(jié)點(diǎn)資源、親和性、反親和性、爭(zhēng)用和其他策略來(lái)選擇合適的節(jié)點(diǎn)。
- kube-controller-manager:控制器管理器運(yùn)行一組控制器,這些控制器負(fù)責(zé)監(jiān)控集群的狀態(tài),并確保期望的狀態(tài)與實(shí)際狀態(tài)保持一致。常見(jiàn)的控制器包括ReplicaSet Controller、Node Controller、Service Controller等。
- cloud-controller-manager(可選):云控制器管理器是與云提供商相關(guān)的控制器,用于處理云資源,如負(fù)載均衡器、持久卷、虛擬機(jī)等。
-
Node節(jié)點(diǎn)(工作節(jié)點(diǎn)):
- kubelet:kubelet是運(yùn)行在每個(gè)Node節(jié)點(diǎn)上的代理服務(wù),負(fù)責(zé)與Master節(jié)點(diǎn)通信,管理節(jié)點(diǎn)上的Pod生命周期,確保Pod按照預(yù)期的方式運(yùn)行。
- kube-proxy:kube-proxy是用于服務(wù)發(fā)現(xiàn)和負(fù)載均衡的網(wǎng)絡(luò)代理,它維護(hù)網(wǎng)絡(luò)規(guī)則,將請(qǐng)求路由到正確的Pod。
- Container Runtime:Kubernetes支持多種容器運(yùn)行時(shí),包括Docker、Containerd、CRI-O等。容器運(yùn)行時(shí)負(fù)責(zé)在節(jié)點(diǎn)上創(chuàng)建和運(yùn)行容器。
在Kubernetes中,一個(gè)宿主機(jī)通常只會(huì)被視為一個(gè)Node節(jié)點(diǎn)。Node節(jié)點(diǎn)代表物理或虛擬機(jī)器,它是Kubernetes集群中的一個(gè)工作節(jié)點(diǎn),用于運(yùn)行容器化的應(yīng)用程序。
一臺(tái)宿主機(jī)對(duì)應(yīng)一個(gè)Node節(jié)點(diǎn),不同宿主機(jī)上的Node節(jié)點(diǎn)是獨(dú)立的,并且它們之間不會(huì)共享資源、容器、網(wǎng)絡(luò)等。Node節(jié)點(diǎn)的數(shù)量由Kubernetes集群的規(guī)模和配置決定。
您可以根據(jù)需要增加或減少Node節(jié)點(diǎn)來(lái)擴(kuò)展或縮小集群的計(jì)算資源。每個(gè)Node節(jié)點(diǎn)上可以運(yùn)行一個(gè)或多個(gè)容器,具體取決于Node的資源配置和負(fù)載需求。在一些特殊情況下,您可以配置多個(gè)Node節(jié)點(diǎn)在同一臺(tái)物理宿主機(jī)上,這被稱為多Node容器化,但這通常是不常見(jiàn)的,而且需要高度的配置和管理,因?yàn)樗婕暗焦蚕硭拗鳈C(jī)上的資源和網(wǎng)絡(luò)。
總之,一個(gè)宿主機(jī)通常對(duì)應(yīng)一個(gè)Node節(jié)點(diǎn),Kubernetes集群中的Node節(jié)點(diǎn)數(shù)量取決于您的集群規(guī)模和需求。要增加或減少Node節(jié)點(diǎn),您可以根據(jù)需要添加或移除宿主機(jī),并在Kubernetes中進(jìn)行相應(yīng)的配置。
-
Pod:Pod是Kubernetes的最小部署單元,通常包含一個(gè)或多個(gè)容器,它們?cè)谕痪W(wǎng)絡(luò)命名空間、存儲(chǔ)卷和節(jié)點(diǎn)上運(yùn)行。Pod代表應(yīng)用程序的一個(gè)實(shí)例。
-
Service:Service定義了一組Pod的網(wǎng)絡(luò)訪問(wèn)方式,提供了負(fù)載均衡、服務(wù)發(fā)現(xiàn)和DNS解析等功能,使應(yīng)用程序能夠穩(wěn)定地運(yùn)行。
-
Volume:Volume是用于在Pod中持久化存儲(chǔ)數(shù)據(jù)的抽象。它可以與Pod一起創(chuàng)建和銷毀,并且可以掛載到Pod的一個(gè)或多個(gè)容器中。
-
Namespace:Namespace用于將集群劃分為多個(gè)虛擬集群,每個(gè)Namespace中可以有自己的Pod、Service和其他資源,以實(shí)現(xiàn)多租戶和隔離。
-
ConfigMap和Secret:ConfigMap用于存儲(chǔ)配置數(shù)據(jù),而Secret用于存儲(chǔ)敏感數(shù)據(jù),它們可以在Pod中以卷的形式掛載。
-
Ingress:Ingress定義了HTTP和HTTPS流量的規(guī)則,允許外部流量訪問(wèn)集群內(nèi)的服務(wù)。
-
其他附加組件:Kubernetes生態(tài)系統(tǒng)中還有許多其他附加組件,如監(jiān)控工具、日志記錄工具、自動(dòng)伸縮控制器、認(rèn)證和授權(quán)插件等,用于增強(qiáng)和擴(kuò)展Kubernetes的功能。
Kubernetes的這些組件共同協(xié)作,以實(shí)現(xiàn)容器化應(yīng)用程序的高度可擴(kuò)展性、可用性和自動(dòng)化管理。不同版本的Kubernetes可能會(huì)有一些變化和新增組件,但這些基本組件構(gòu)成了Kubernetes的核心架構(gòu)。
簡(jiǎn)介
yml文件---->前臺(tái)處理---->API Server---->Controller Manager------>Kubelet(Pod創(chuàng)建,修改,監(jiān)控等全周期管理)
API Server是資源對(duì)象的唯一操作入口,所有執(zhí)行,操作解析后都是調(diào)用API然后觸發(fā)Controller Manager實(shí)現(xiàn)功能。
Pods:
- 一個(gè)可以被創(chuàng)建、銷毀、調(diào)度、管理的最小的部署單元,例如一個(gè)或一組容器
- 每個(gè)Pod有一個(gè)獨(dú)立的IP
- 同一個(gè)Pod的容器共享網(wǎng)絡(luò),共享存儲(chǔ)資源:localhost相互通信
Pods的使用
- 具有密切連接關(guān)系(相互訪問(wèn)、共享數(shù)據(jù)) 的容器放在同一個(gè)Pod中
K8S+Docker VS Docker
Docker+K8S簡(jiǎn)介
Kubernetes(通??s寫(xiě)為K8s)和Docker是兩個(gè)不同但密切相關(guān)的容器技術(shù)。它們?cè)谌萜骰瘧?yīng)用程序方面發(fā)揮不同的角色,通常一起使用以實(shí)現(xiàn)更好的容器化應(yīng)用程序管理和部署。
-
Docker(容器引擎):
- Docker是一種容器化技術(shù),它允許開(kāi)發(fā)人員將應(yīng)用程序和其依賴項(xiàng)打包到一個(gè)可移植的容器中。這個(gè)容器包含了應(yīng)用程序的所有必要組件,包括代碼、運(yùn)行時(shí)環(huán)境、庫(kù)和配置。
- Docker容器具有以下優(yōu)點(diǎn):可移植性、隔離性、輕量級(jí)、快速啟動(dòng)和關(guān)閉、易于擴(kuò)展等。
-
Kubernetes(容器編排平臺(tái)):
- Kubernetes是一個(gè)開(kāi)源的容器編排平臺(tái),用于自動(dòng)化和管理容器化應(yīng)用程序的部署、擴(kuò)展、更新和運(yùn)維。Kubernetes提供了一種容器編排的框架,以確保容器在集群中按照期望的方式運(yùn)行。
- Kubernetes的功能包括自動(dòng)負(fù)載均衡、自動(dòng)擴(kuò)展、容器自愈、滾動(dòng)升級(jí)、服務(wù)發(fā)現(xiàn)等。它還提供了用于定義應(yīng)用程序架構(gòu)的聲明式配置(例如Pods、Services、Deployments等)。
聯(lián)系:
- Docker通常用于創(chuàng)建和管理單個(gè)容器,而Kubernetes用于協(xié)調(diào)和管理多個(gè)容器的集群。Kubernetes可以管理數(shù)百甚至數(shù)千個(gè)容器實(shí)例,確保它們?cè)诟鞣N節(jié)點(diǎn)上正確運(yùn)行,具備高可用性和容錯(cuò)性。
- Kubernetes可以使用Docker作為容器運(yùn)行時(shí)(Container Runtime),這意味著它可以直接與Docker引擎一起使用。但是,Kubernetes也支持其他容器運(yùn)行時(shí),如Containerd和CRI-O。
- Kubernetes提供了對(duì)Docker容器的高級(jí)編排、自動(dòng)化和管理功能,例如水平擴(kuò)展、自動(dòng)恢復(fù)、滾動(dòng)升級(jí)等,使得容器化應(yīng)用程序在生產(chǎn)環(huán)境中更容易管理和擴(kuò)展。
總之,Docker是容器技術(shù)的核心,而Kubernetes是一個(gè)容器編排平臺(tái),用于自動(dòng)化和管理大規(guī)模的Docker容器集群。它們一起使用,可以實(shí)現(xiàn)高度可伸縮、高可用性的容器化應(yīng)用程序部署和管理。
K8S配合docker相比較單純使用docker
K8S配合docker優(yōu)勢(shì)(單獨(dú)使用docker劣勢(shì))
- 調(diào)度:靈活資源分配:CPU,GPU,內(nèi)存等(Pod的label+Scheduler)
- 修復(fù):容器跑出問(wèn)題了,換個(gè)主機(jī)再跑跑(controller manager)
- 自動(dòng)擴(kuò)縮容:超過(guò)人為設(shè)定的監(jiān)控指標(biāo)自動(dòng)擴(kuò)縮容(controller manager)
Kubernetes(K8s)與單純使用Docker相比,具有一些重要的優(yōu)勢(shì)和適用場(chǎng)景。下面是一些比較:
-
自動(dòng)化容器編排:
- Kubernetes允許您自動(dòng)化地編排、管理和擴(kuò)展容器化應(yīng)用程序,而無(wú)需手動(dòng)管理容器的生命周期。這包括自動(dòng)部署、水平擴(kuò)展、滾動(dòng)升級(jí)、自動(dòng)故障恢復(fù)等功能,減少了操作負(fù)擔(dān)。
-
高可用性:
- Kubernetes提供了內(nèi)置的高可用性機(jī)制,允許您在多個(gè)節(jié)點(diǎn)上運(yùn)行應(yīng)用程序的副本,以確保應(yīng)用程序的可用性。如果某個(gè)節(jié)點(diǎn)或容器失敗,Kubernetes可以自動(dòng)遷移工作負(fù)載以保持應(yīng)用程序的正常運(yùn)行。
-
多租戶支持:
- Kubernetes支持命名空間(Namespaces),可以將集群劃分為多個(gè)虛擬集群,每個(gè)命名空間都有自己的資源隔離,適用于多租戶環(huán)境。
-
服務(wù)發(fā)現(xiàn)和負(fù)載均衡:
- Kubernetes提供了內(nèi)置的服務(wù)發(fā)現(xiàn)和負(fù)載均衡功能,允許應(yīng)用程序組件相互發(fā)現(xiàn)并與其他服務(wù)通信,而無(wú)需硬編碼IP地址和端口。
-
聲明式配置:
- Kubernetes使用聲明式配置來(lái)定義應(yīng)用程序的狀態(tài)和規(guī)模,而不是命令式的操作。這樣,您只需描述所需的狀態(tài),而不必關(guān)心如何達(dá)到該狀態(tài),Kubernetes會(huì)負(fù)責(zé)實(shí)現(xiàn)。
-
自動(dòng)伸縮:
- Kubernetes可以根據(jù)工作負(fù)載的需求自動(dòng)擴(kuò)展應(yīng)用程序,以滿足流量的變化。這可以節(jié)省資源并確保應(yīng)用程序的性能。
-
滾動(dòng)升級(jí)和回滾:
- Kubernetes支持滾動(dòng)升級(jí),允許您在不中斷服務(wù)的情況下逐步更新應(yīng)用程序。如果升級(jí)失敗,您可以輕松地回滾到之前的版本。
-
資源管理:
- Kubernetes提供了資源管理功能,允許您限制容器的CPU和內(nèi)存使用,以確保資源公平共享。
-
生態(tài)系統(tǒng)支持:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-704209.html
- Kubernetes具有豐富的生態(tài)系統(tǒng),包括各種插件、工具和集成,用于監(jiān)控、日志記錄、安全性、認(rèn)證等方面。
然而,對(duì)于一些簡(jiǎn)單的應(yīng)用場(chǎng)景,使用Docker本身可能足夠了,特別是在開(kāi)發(fā)和測(cè)試階段。Kubernetes在復(fù)雜的容器化應(yīng)用程序中表現(xiàn)出色,但也需要更多的配置和管理工作。因此,選擇Kubernetes還是純粹使用Docker取決于您的應(yīng)用程序需求和規(guī)模。如果應(yīng)用程序較小且需要簡(jiǎn)單的容器管理,Docker可能足夠;但如果需要高可用性、自動(dòng)化和擴(kuò)展性,那么Kubernetes可能更適合。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-704209.html
到了這里,關(guān)于kubernetes(K8S)筆記的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!