自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

面試問到了K8S原理,花5分鐘來總結(jié)下,以后再也不怕了

開發(fā) 前端
K8S現(xiàn)在是一項(xiàng)必會(huì)的技能,它為軟件工程師提供了強(qiáng)大的容器編排能力,模糊了開發(fā)和運(yùn)維之間的邊界,讓我們開發(fā)、管理和維護(hù)一個(gè)大型的分布式系統(tǒng)和項(xiàng)目變得更加容易,并且每次面試多多少少都會(huì)問到,筆者也是被問到了很多次。本文就準(zhǔn)備用最短的篇幅來介紹下K8S的工作過程。

前言

 

面試問到了K8S原理,花5分鐘來總結(jié)下,以后再也不怕了
K8S

K8S現(xiàn)在是一項(xiàng)必會(huì)的技能,它為軟件工程師提供了強(qiáng)大的容器編排能力,模糊了開發(fā)和運(yùn)維之間的邊界,讓我們開發(fā)、管理和維護(hù)一個(gè)大型的分布式系統(tǒng)和項(xiàng)目變得更加容易,并且每次面試多多少少都會(huì)問到,筆者也是被問到了很多次。本文就準(zhǔn)備用最短的篇幅來介紹下K8S的工作過程。

K8S架構(gòu)組成

Kubernetes最初源于谷歌內(nèi)部的Borg,提供了面向應(yīng)用的容器集群部署和管理系統(tǒng)。Kubernetes借鑒了Borg的設(shè)計(jì)理念,比如Pod、Service、Labels和單Pod單IP等。

 

面試問到了K8S原理,花5分鐘來總結(jié)下,以后再也不怕了
K8S架構(gòu)圖

Kubernetes主要由以下幾個(gè)核心組件組成:

  • etcd保存了整個(gè)集群的狀態(tài);
  • apiserver提供了資源操作的唯一入口,并提供認(rèn)證、授權(quán)、訪問控制、API注冊(cè)和發(fā)現(xiàn)等機(jī)制;
  • controller manager負(fù)責(zé)維護(hù)集群的狀態(tài),比如故障檢測(cè)、自動(dòng)擴(kuò)展、滾動(dòng)更新等;
  • scheduler負(fù)責(zé)資源的調(diào)度,按照預(yù)定的調(diào)度策略將Pod調(diào)度到相應(yīng)的機(jī)器上;
  • kubelet負(fù)責(zé)維護(hù)容器的生命周期,同時(shí)也負(fù)責(zé)Volume(CVI)和網(wǎng)絡(luò)(CNI)的管理;
  • Container runtime負(fù)責(zé)鏡像管理以及Pod和容器的真正運(yùn)行(CRI);
  • kube-proxy負(fù)責(zé)為Service提供cluster內(nèi)部的服務(wù)發(fā)現(xiàn)和負(fù)載均衡;

除了核心組件,還有一些推薦的Add-ons:

  • kube-dns負(fù)責(zé)為整個(gè)集群提供DNS服務(wù)
  • Ingress Controller為服務(wù)提供外網(wǎng)入口
  • Heapster提供資源監(jiān)控
  • Dashboard提供GUI
  • Federation提供跨可用區(qū)的集群
  • Fluentd-elasticsearch提供集群日志采集、存儲(chǔ)與查詢

k8s各組件間工作流程

 

面試問到了K8S原理,花5分鐘來總結(jié)下,以后再也不怕了
K8S工作過程

①運(yùn)維人員向kube-apiserver發(fā)出指令(我想干什么,我期望事情是什么狀態(tài))

(以下kube-apiserver簡(jiǎn)稱apiserver、kube-controller-manager簡(jiǎn)稱controller、kube-scheduler簡(jiǎn)稱scheduler)

②api響應(yīng)命令,通過一系列認(rèn)證授權(quán),把pod數(shù)據(jù)存儲(chǔ)到etcd,創(chuàng)建deployment資源并初始化。(期望狀態(tài))

③controller通過list-watch機(jī)制,監(jiān)測(cè)發(fā)現(xiàn)新的deployment,將該資源加入到內(nèi)部工作隊(duì)列,發(fā)現(xiàn)該資源沒有關(guān)聯(lián)的pod和replicaset,啟用deployment controller創(chuàng)建replicaset資源,再啟用replicaset controller創(chuàng)建pod。

④所有controller被創(chuàng)建完成后.將deployment,replicaset,pod資源更新存儲(chǔ)到etcd。

⑤scheduler通過list-watch機(jī)制,監(jiān)測(cè)發(fā)現(xiàn)新的pod,經(jīng)過主機(jī)過濾、主機(jī)打分規(guī)則,將pod綁定(binding)到合適的主機(jī)。

⑥將綁定結(jié)果存儲(chǔ)到etcd。

⑦kubelet每隔 20s(可以自定義)向apiserver通過NodeName 獲取自身Node上所要運(yùn)行的pod清單.通過與自己的內(nèi)部緩存進(jìn)行比較,新增加pod。

⑧kubelet創(chuàng)建pod。

⑨kube-proxy為新創(chuàng)建的pod注冊(cè)動(dòng)態(tài)DNS到CoreOS。給pod的service添加iptables/ipvs規(guī)則,用于服務(wù)發(fā)現(xiàn)和負(fù)載均衡。

⑩controller通過control loop(控制循環(huán))將當(dāng)前pod狀態(tài)與用戶所期望的狀態(tài)做對(duì)比,如果當(dāng)前狀態(tài)與用戶期望狀態(tài)不同,則controller會(huì)將pod修改為用戶期望狀態(tài),實(shí)在不行會(huì)將此pod刪掉,然后重新創(chuàng)建pod。

總結(jié)

 

[[348916]]
K8S

Kubernetes的架構(gòu)設(shè)計(jì),理清楚之后,其實(shí)還是很簡(jiǎn)單的。面試的時(shí)候問到K8S原理,對(duì)于大部分人來說能答出這些,基本上就差不多了。Kubernetes深入的實(shí)現(xiàn)原理,還需要單獨(dú)分析,本文只是一個(gè)拋磚引玉,如果有錯(cuò)誤,歡迎大家批評(píng)指正。大家一起努力進(jìn)步!

責(zé)任編輯:未麗燕 來源: 今日頭條
相關(guān)推薦

2020-04-30 10:24:35

Spring循環(huán)依賴Java

2019-06-17 05:03:37

memcache內(nèi)核架構(gòu)

2020-02-19 19:26:27

K8S開源平臺(tái)容器技術(shù)

2020-07-14 20:03:55

Windows 10Windows微軟

2023-11-27 13:54:00

kubernetes高可用

2023-11-15 13:44:00

k8s-域名日志

2023-09-15 08:00:20

Ingress網(wǎng)關(guān)Istio

2020-11-24 07:48:32

React

2021-08-10 18:36:02

Express原理面試

2020-10-20 09:12:57

axios核心原理

2024-09-26 18:04:02

2023-02-28 17:27:02

分庫分表中間件

2023-09-27 08:09:22

2022-08-27 13:49:36

ES7promiseresolve

2022-07-11 07:36:36

緩存緩存雪崩緩存擊穿

2021-03-12 08:20:24

架構(gòu)網(wǎng)絡(luò)模型

2023-11-30 08:08:30

k8s優(yōu)雅停機(jī)

2020-10-15 12:52:46

SpringbootJava編程語言

2022-10-31 11:10:49

Javavolatile變量

2023-09-21 11:28:28

Kubernetes云原生
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)