掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
前言

創(chuàng)新互聯(lián)公司于2013年成立,先為興縣等服務(wù)建站,興縣等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為興縣企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
K8S
K8S現(xiàn)在是一項必會的技能,它為軟件工程師提供了強大的容器編排能力,模糊了開發(fā)和運維之間的邊界,讓我們開發(fā)、管理和維護一個大型的分布式系統(tǒng)和項目變得更加容易,并且每次面試多多少少都會問到,筆者也是被問到了很多次。本文就準(zhǔn)備用最短的篇幅來介紹下K8S的工作過程。
K8S架構(gòu)組成
Kubernetes最初源于谷歌內(nèi)部的Borg,提供了面向應(yīng)用的容器集群部署和管理系統(tǒng)。Kubernetes借鑒了Borg的設(shè)計理念,比如Pod、Service、Labels和單Pod單IP等。
K8S架構(gòu)圖
Kubernetes主要由以下幾個核心組件組成:
除了核心組件,還有一些推薦的Add-ons:
k8s各組件間工作流程
K8S工作過程
①運維人員向kube-apiserver發(fā)出指令(我想干什么,我期望事情是什么狀態(tài))
(以下kube-apiserver簡稱apiserver、kube-controller-manager簡稱controller、kube-scheduler簡稱scheduler)
②api響應(yīng)命令,通過一系列認證授權(quán),把pod數(shù)據(jù)存儲到etcd,創(chuàng)建deployment資源并初始化。(期望狀態(tài))
③controller通過list-watch機制,監(jiān)測發(fā)現(xiàn)新的deployment,將該資源加入到內(nèi)部工作隊列,發(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資源更新存儲到etcd。
⑤scheduler通過list-watch機制,監(jiān)測發(fā)現(xiàn)新的pod,經(jīng)過主機過濾、主機打分規(guī)則,將pod綁定(binding)到合適的主機。
⑥將綁定結(jié)果存儲到etcd。
⑦kubelet每隔 20s(可以自定義)向apiserver通過NodeName 獲取自身Node上所要運行的pod清單.通過與自己的內(nèi)部緩存進行比較,新增加pod。
⑧kubelet創(chuàng)建pod。
⑨kube-proxy為新創(chuàng)建的pod注冊動態(tài)DNS到CoreOS。給pod的service添加iptables/ipvs規(guī)則,用于服務(wù)發(fā)現(xiàn)和負載均衡。
⑩controller通過control loop(控制循環(huán))將當(dāng)前pod狀態(tài)與用戶所期望的狀態(tài)做對比,如果當(dāng)前狀態(tài)與用戶期望狀態(tài)不同,則controller會將pod修改為用戶期望狀態(tài),實在不行會將此pod刪掉,然后重新創(chuàng)建pod。
總結(jié)
[[348916]]
K8S
Kubernetes的架構(gòu)設(shè)計,理清楚之后,其實還是很簡單的。面試的時候問到K8S原理,對于大部分人來說能答出這些,基本上就差不多了。Kubernetes深入的實現(xiàn)原理,還需要單獨分析,本文只是一個拋磚引玉,如果有錯誤,歡迎大家批評指正。大家一起努力進步!

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流