目錄
一、Kubernetes 簡(jiǎn)介
二、Kubernetes 架構(gòu)
三、Kunbernetes 有哪些核心概念?
1. 集群 Cluster
2. 容器 Container
3. POD
4. 副本集 ReplicaSet
5. 服務(wù) service
6. 發(fā)布 Deployment
7. ConfigMap/Secret
8. DaemonSet
9. 核心概念總結(jié)
一、Kubernetes 簡(jiǎn)介
Kubernetes 簡(jiǎn)稱 k8s,是支持云原生部署的一個(gè)平臺(tái),起源于谷歌。谷歌早在十幾年之前就對(duì)其應(yīng)用,通過容器方式進(jìn)行部署。
k8s 本質(zhì)上就是用來簡(jiǎn)化微服務(wù)的開發(fā)和部署的,關(guān)注點(diǎn)包括自愈和自動(dòng)伸縮、調(diào)度和發(fā)布、調(diào)用鏈監(jiān)控、配置管理、Metrics 監(jiān)控、日志監(jiān)控、彈性和容錯(cuò)、API 管理、服務(wù)安全等,k8s 將這些微服務(wù)的公共關(guān)注點(diǎn)以組件形式封裝打包到 k8s 這個(gè)大平臺(tái)中,讓開發(fā)人員在開發(fā)微服務(wù)時(shí)專注于業(yè)務(wù)邏輯的實(shí)現(xiàn),而不需要去特別關(guān)系微服務(wù)底層的這些公共關(guān)注點(diǎn),大大簡(jiǎn)化了微服務(wù)應(yīng)用的開發(fā)和部署,提高了開發(fā)效率。
二、Kubernetes 架構(gòu)
k8s 總體架構(gòu)采用了經(jīng)典的 master slave 架構(gòu)模式,分 master 節(jié)點(diǎn)和 worker 節(jié)點(diǎn),節(jié)點(diǎn)可以是虛擬機(jī)也可以是物理機(jī)。
master 節(jié)點(diǎn)由以下組件組成;
- etcd,一種的分布式存儲(chǔ)機(jī)制,底層采用?Raft 協(xié)議,k8s 集群的狀態(tài)數(shù)據(jù)包括配置、節(jié)點(diǎn)等都存儲(chǔ)于 etcd 中,它保存了整個(gè)集群的狀態(tài)。
- API server,對(duì)外提供操作和獲取 k8s 集群資源的的 API,是唯一操作 etcd 的組件,其他的組件包括管理員操作都是通過 API server 進(jìn)行交互的,可以將它理解成 etcd 的 “代理人”。
- Scheduler,在 k8s 集群中做調(diào)動(dòng)決策,負(fù)責(zé)資源的調(diào)度,按照預(yù)定的調(diào)度策略將 Pod 調(diào)度到相應(yīng)的機(jī)器上。
- Controller Manager,相當(dāng)于集群狀態(tài)的協(xié)調(diào)者,觀察著集群的實(shí)際狀態(tài),與 etcd 中的預(yù)期狀態(tài)進(jìn)行對(duì)比,如果不一致則對(duì)資源進(jìn)行協(xié)調(diào)操作讓實(shí)際狀態(tài)和預(yù)期狀態(tài)達(dá)到最終的一致,維護(hù)集群的狀態(tài),比如故障檢測(cè)、自動(dòng)擴(kuò)展、滾動(dòng)更新等。
worker 節(jié)點(diǎn)由以下組件組成:
- Controller Runtime,下載鏡像和運(yùn)行容器的組件,負(fù)責(zé)鏡像管理以及 Pod 和容器的真正運(yùn)行(CRI)。
- Pod,k8s 中特有的一個(gè)概念,可以理解為對(duì)容器的包裝,是 k8s 的基本調(diào)度單位,實(shí)際的容器時(shí)運(yùn)行在 Pod 中的,一個(gè)節(jié)點(diǎn)可以啟動(dòng)一個(gè)或多個(gè) Pod。
- kubelet,負(fù)責(zé)管理 worker 節(jié)點(diǎn)上的組件,與 master 節(jié)點(diǎn)上的 API server 節(jié)點(diǎn)進(jìn)行交互,接受指令執(zhí)行操作。
- kube-proxy,負(fù)責(zé)對(duì) Pod 進(jìn)行尋址和負(fù)載均衡
用戶操作 k8s 集群一般是通過 kubectl 命令行工具或者 dashboard;Pod 之間進(jìn)行通訊是通過集群內(nèi)部的覆蓋網(wǎng)絡(luò) Overlay Network,外部流量想要進(jìn)入集群訪問 Pod 則是通過負(fù)載均衡 Load Balander 設(shè)備進(jìn)行。
三、Kunbernetes 有哪些核心概念?
1. 集群 Cluster
集群有多個(gè)節(jié)點(diǎn)組成且可以按需添加節(jié)點(diǎn)(物理機(jī)/虛擬機(jī)),每一個(gè)節(jié)點(diǎn)都包含一定數(shù)量的 CPU 和內(nèi)存 RAM。
2. 容器 Container
k8s 本身是一個(gè)容器調(diào)度平臺(tái),從宿主機(jī)操作系統(tǒng)來看,容器就是一個(gè)一個(gè)的進(jìn)程。從容器內(nèi)部來看容器就是一個(gè)操作系統(tǒng),它有著自己的網(wǎng)絡(luò)、CPU、文件系統(tǒng)等資源。
3. POD
k8s 也不是直接調(diào)度容器的,而是將其封裝成了一個(gè)個(gè) POD,POD 才是 k8s 的基本調(diào)度單位。每個(gè) POD 中可以運(yùn)行一個(gè)或多個(gè)容器,共享 POD 的文件系統(tǒng)、IP 和網(wǎng)絡(luò)等資源,每一個(gè) POD 只有一個(gè) IP。
4. 副本集 ReplicaSet
一個(gè)應(yīng)用發(fā)布時(shí)會(huì)發(fā)布多個(gè) POD 實(shí)例,副本集可對(duì)應(yīng)一個(gè)應(yīng)用的一組 POD,它可以通過模板來規(guī)范某個(gè)應(yīng)用的容器鏡像、端口,副本數(shù)量等。運(yùn)行時(shí)副本集會(huì)監(jiān)控和維護(hù) POD 的數(shù)量,數(shù)量過多則會(huì)下線 POD,過少則啟動(dòng) POD。
5. 服務(wù) service
POD 在 k8s 中是不固定的,可能會(huì)掛起或者重啟,且掛起重啟都是不可預(yù)期的,那么這就會(huì)導(dǎo)致服務(wù)的 IP 也隨著不停的變化,給用戶的尋址造成一定的困難。而 service 就是用來解決這個(gè)問題的,它屏蔽了應(yīng)用的 IP 尋址和負(fù)載均衡,消費(fèi)方可直接通過服務(wù)名來訪問目標(biāo)服務(wù),尋址和負(fù)載均衡均由 service 底層進(jìn)行。
6. 發(fā)布 Deployment
副本集就是一種基本的發(fā)布機(jī)制,可以實(shí)現(xiàn)基本的或者高級(jí)的應(yīng)用發(fā)布,但操作較為繁瑣。未來簡(jiǎn)化這些操作,k8s 引入了 Deployment 來管理?ReplicaSet,實(shí)現(xiàn)一些高級(jí)發(fā)布機(jī)制。
7. ConfigMap/Secret
微服務(wù)在上線時(shí)需要設(shè)置一些可變配置,環(huán)境不同則配置值不同,有些配置如數(shù)據(jù)庫(kù)的連接字符串在啟動(dòng)時(shí)就應(yīng)該配好,有些配置則可以在運(yùn)行中動(dòng)態(tài)調(diào)整。為了實(shí)現(xiàn)針對(duì)不同環(huán)境靈活實(shí)現(xiàn)動(dòng)態(tài)配置,微服務(wù)就需要 ConfigMap 的支持。
k8s 平臺(tái)內(nèi)置支持微服務(wù)的配置(ConfigMap),開發(fā)人員將配置填寫在?ConfigMap 中,k8s 再 將?ConfigMap 中的配置以環(huán)境變量的形式注入 POD,這樣 POD 中的應(yīng)用就可以訪問這些配置。
Secret 是一種特殊的?ConfigMap,提供更加安全的存儲(chǔ)和訪問配置機(jī)制。
8. DaemonSet
在微服務(wù)中,每個(gè)節(jié)點(diǎn)需要配置一個(gè)常駐守護(hù)進(jìn)程。DaemonSet 可支持在每一個(gè) worker 節(jié)點(diǎn)上面配置一個(gè)守護(hù)進(jìn)程 POD 并且保證每一個(gè)節(jié)點(diǎn)上有且僅有一個(gè) POD。
9. 核心概念總結(jié)
概念 | 作用 |
---|---|
cluster | 超大計(jì)算機(jī)抽象,由節(jié)點(diǎn)組成 |
Container | 應(yīng)用居住和運(yùn)行在容器中 |
Pod | Kubernetes 基本調(diào)度單位 |
Service | 應(yīng)用Pods的訪問點(diǎn),屏蔽IP尋址和負(fù)載均衡 |
Deployment文章來源:http://www.zghlxwxcb.cn/news/detail-776841.html |
管理ReplicaSet,支持滾動(dòng)等高級(jí)發(fā)布機(jī)制 |
ConfigMap/Secrets | 應(yīng)用配置,secret敏感數(shù)據(jù)配置 |
DaemonSet | 保證每個(gè)節(jié)點(diǎn)有且僅有一個(gè)Pod,常見于監(jiān)控 |
以上概念點(diǎn)為 Kubernetes 最基本和最重要的概念總結(jié),掌握后可適用于絕大部分云原生場(chǎng)景,還有部分概念本文未作介紹。文章來源地址http://www.zghlxwxcb.cn/news/detail-776841.html
到了這里,關(guān)于【云原生 ? Kubernetes】認(rèn)識(shí) k8s、k8s 架構(gòu)、核心概念點(diǎn)介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!