面試問到了K8S原理,花5分鐘來總結下,以後再也不怕了

2020-10-26 DevOps筆記

前言


K8S

K8S現在是一項必會的技能,它為軟體工程師提供了強大的容器編排能力,模糊了開發和運維之間的邊界,讓我們開發、管理和維護一個大型的分布式系統和項目變得更加容易,並且每次面試多多少少都會問到,筆者也是被問到了很多次。本文就準備用最短的篇幅來介紹下K8S的工作過程。

K8S架構組成

Kubernetes最初源於谷歌內部的Borg,提供了面向應用的容器集群部署和管理系統。Kubernetes借鑑了Borg的設計理念,比如Pod、Service、Labels和單Pod單IP等。


K8S架構圖

Kubernetes主要由以下幾個核心組件組成:

  • etcd保存了整個集群的狀態;
  • apiserver提供了資源操作的唯一入口,並提供認證、授權、訪問控制、API註冊和發現等機制;
  • controller manager負責維護集群的狀態,比如故障檢測、自動擴展、滾動更新等;
  • scheduler負責資源的調度,按照預定的調度策略將Pod調度到相應的機器上;
  • kubelet負責維護容器的生命周期,同時也負責Volume(CVI)和網絡(CNI)的管理;
  • Container runtime負責鏡像管理以及Pod和容器的真正運行(CRI);
  • kube-proxy負責為Service提供cluster內部的服務發現和負載均衡;

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

  • kube-dns負責為整個集群提供DNS服務
  • Ingress Controller為服務提供外網入口
  • Heapster提供資源監控
  • Dashboard提供GUI
  • Federation提供跨可用區的集群
  • Fluentd-elasticsearch提供集群日誌採集、存儲與查詢

k8s各組件間工作流程


K8S工作過程

①運維人員向kube-apiserver發出指令(我想幹什麼,我期望事情是什麼狀態)

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

②api響應命令,通過一系列認證授權,把pod數據存儲到etcd,創建deployment資源並初始化。(期望狀態)

③controller通過list-watch機制,監測發現新的deployment,將該資源加入到內部工作隊列,發現該資源沒有關聯的pod和replicaset,啟用deployment controller創建replicaset資源,再啟用replicaset controller創建pod。

④所有controller被創建完成後.將deployment,replicaset,pod資源更新存儲到etcd。

⑤scheduler通過list-watch機制,監測發現新的pod,經過主機過濾、主機打分規則,將pod綁定(binding)到合適的主機。

⑥將綁定結果存儲到etcd。

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

⑧kubelet創建pod。

⑨kube-proxy為新創建的pod註冊動態DNS到CoreOS。給pod的service添加iptables/ipvs規則,用於服務發現和負載均衡。

⑩controller通過control loop(控制循環)將當前pod狀態與用戶所期望的狀態做對比,如果當前狀態與用戶期望狀態不同,則controller會將pod修改為用戶期望狀態,實在不行會將此pod刪掉,然後重新創建pod。

總結


K8S

Kubernetes的架構設計,理清楚之後,其實還是很簡單的。面試的時候問到K8S原理,對於大部分人來說能答出這些,基本上就差不多了。Kubernetes深入的實現原理,還需要單獨分析,本文只是一個拋磚引玉,如果有錯誤,歡迎大家批評指正。大家一起努力進步!

相關焦點

  • 剛參加完阿里面試:四面,我的復盤經驗總結
    4 私有雲,docker和k8s等?5 了解哪些中間件,dubbo,rocketmq,mycat等?10 聽說我是非科班,於是問了些排序算法面試耗時將近30分鐘。阿里技術三面:三面不是面試,而是筆試,耗時三個小時,考的是Java核心的基礎。
  • 每天5分鐘|輕鬆掌握開發工作中必會的k8s-基礎組件與架構
    前面我們介紹過,k8s是用來實現自動化部署、擴展、管理容器化應用的開源系統,它讓我們可以像控制一臺單一的計算機一樣控制整個節點集群。假設此刻有3個節點,要怎麼用k8s來管理我們的機器上的應用容器的呢?簡單來講,就是選擇其中一臺作為master節點,另外兩臺作為worker節點,分別在這3個節點上安裝k8s對應的組件,然後就可以使用k8s來管理節點上的應用容器。
  • 9月面試基本結束!總結下阿里、騰訊、京東的Java面試題
    金九銀十過去了一半,很多朋友也基本都收到了大廠offer,今天為大家整理下目前大廠問到的面試題HashMap的數據結構——引出Java7跟Java8的區別在什麼情況下會做一個鍊表到紅黑樹的轉換你知道哪幾種垃圾收集器,各自的優缺點,重點講下cms和G1,包括原理,流程,優缺點。
  • 每天5分鐘|輕鬆掌握開發工作必會的k8s-命令行操作k8s太麻煩?
    考慮到了這一點,k8s官方提供了基於WEB的可視化用戶界面,可以通過界面進行快捷操作,方便我們管理K8S集群,並展示集群的狀態。K8S集群裡面默認沒有包含Dashboard這個組件,我們需要額外安裝它。來吧,我們來安裝下吧!
  • 從kubectl top看K8S監控原理
    ,也暴露了接口,但走到這一步和 heapster 其實沒有區別,最關鍵的一步就是如何將打到apiserver的/apis/metrics.k8s.io請求轉發給metrics-server組件?kube-aggregator是對 apiserver 的有力擴展,它允許k8s的開發人員編寫一個自己的服務,並把這個服務註冊到k8s的api裡面,即擴展 API,metric-server其實在 1.7
  • 企業微服務項目如何進入K8S的全過程
    那項目從0開始時,一直進入到k8s中,整體流程是什麼,以及用到什麼工具組件呢?今天老顧就從整體上面來介紹一下。git版本倉庫;2)Jenkins人工/定時觸發項目構建;3)jenkins拉取代碼、代碼編碼、打包鏡像、推送到測試環境的鏡像倉庫;4)k8s拉取鏡像產生pod中的容器5)測試環境中測試沒有問題後
  • 阿里面試應該注意什麼?通過5輪面試的阿里實習生親述
    今天給大家分享的是一位剛拿到阿里offer的程式設計師,是如何通過阿里的5次面試的。希望能夠幫助到更多想進大廠的程式設計師們。這樣,會讓面試官覺得你確實是在這個技術上面下過功夫的。自我介紹下自己,不超過3分鐘(我的自我介紹仍然不超過1分鐘)你說你熟悉並發編程,那麼你說說Java鎖有哪些種類,以及區別(果然深度不一樣)如何保證內存可見性Http請求的過程與原理TCP連接的特點TCP連接如何保證安全可靠的
  • 再也不怕面試官問我堆排序了
    前提面試中經常會遇到對堆排序的考察,比如阿里巴巴2016研發工程師筆試題之一:將整數數組(7-6-3-5-4-1-2)按照堆排序的方式原地進行升序排列,請問在第一輪排序結束之後,數組的順序是_____。不了解堆排序的小夥伴此時就會比較尷尬了。
  • 做了3年Java的朋友跳槽天貓,拿下offer(面經總結)
    面試耗時將近30分鐘。40分鐘。面試總結:阿里的面試特別喜歡面試技術原理,特別是多線程NIO異步消息框架分布式相關的緩存算法等JVM的加載過程和原理回收算法以及具體使用過的框架,會問部分參數檢驗你是否熟用
  • 用rancher2分分鐘搭建k8s集群
    Kubernetes簡單介紹先簡單介紹下Kubernetes,簡稱k8s。k8s擴展docker單個容器的管理功能,實現誇多主機的問題,容器編排要負責網絡,存儲,安全等問題。具體來講包括以下幾點,可以讓應用的管理和部署得到巨大紅利,實現devops故障遷移:當某一個node節點關機或掛掉後,node節點上的服務會自動轉移到另一個node節點上,這個過程所有服務不中斷。
  • 面試被問 I/O到自閉?吃透Netty+Nginx+Redis三份PDF,吊打面試官
    編寫,是國內首本深入介紹Netty 原理和架構的書籍,也是作者多年實戰經驗的總結和濃縮。  當你在學習這份文檔的時候,個人建議是不要死記硬背,把關鍵點標識出來,理解通透,做下筆記,以後一定會用到的!  整理不易,真誠分享,你如你剛好有需要,請您幫我轉發一下文章後關注我後臺私信【文檔】來獲取到這3份文檔吧!
  • K8S動手教程2.5:Pod健康檢查
    構建鏡像,名字為health_image:latest,記得推送到自己的倉庫。注意:由於現在是兩節點K8S集群,如果想要測試比較順暢,建議在兩個節點都構建鏡像。從配置可以看出,健康檢查會訪問app.js文件中接口,該接口在訪問3次以後,會返回500錯誤,此時容器會處於不正常狀態。運行該Pod,觀察健康檢查如何發生作用。
  • 10年Java後端老兵,三面阿里後面試總結
    ,今年是最不怕平凡的一年,年初隨著疫情襲來,在家辦公了好幾個月。3:面:你說使用到了AOP,能談談它的實現原理嘛?答:它是依靠動態代理實現的,動態代理又分為JDK自身的以及CGLIB..............4:面:嗯,能說說他們的不同及優缺點嘛?答:JDK是基於接口實現,而CGLIB繼承代理類。。。(就是這樣會直問下去,如果聊的差不多了就開始問一些零散的問題:)5:JMM內存模型,如何劃分的?分別存儲什麼內容?
  • 什麼是面試100問?
    實際上,關於究竟如何面試,怎樣搞定面試官,你網上搜下,會發現一大堆注意事項,從穿著,到言談舉止,再到成千上萬個面試問題的標準答案……你真的要這麼看下去,怎麼也不可能看完。於是,在沒看完的情況下面試,心裡就會發毛......
  • 5年開發經驗,進入騰訊當上了面試官,總結一下常問面試題
    有個朋友5年開發經驗、在18年年底的時候開始跑路找工作,在網際網路寒冬下成功拿到阿里巴巴、今日頭條、騰訊等公司到現在入職也快2年了,也成為了面試官,之前面試了很多家公司,感覺大部分公司考察的點都差不多,趁空閒時間,將他自己的心得記下來,希望能給正在找或者準備找工作的朋友提供一點幫助。下面列列舉了一些問題大家可以看看自己是否能回答出來,當然面試題是準備的一方面,而我們自己的本身技能也是一方面,技術不過關也會被刷下來。
  • 每天5分鐘|輕鬆掌握開發工作必會的k8s-eplicationController介紹
    幸運的是,這些問題,不需要通過第三方工具來輔助實現,k8s內部就已經集成了這些問題的解決方案。在k8s中,可以通過配置ReplicationController這個對象來維護和管理Pod。步驟一:先來查看下當前的pod:kubectl get pods步驟二:刪除掉這個pod:kubectl delete -f nginx-pod.yaml步驟三:重新創建一個名為rc.yaml的文件,文件中寫上如下內容:apiVersion: v1#定義資源的類型為replicationcntroller
  • 1小時錄音5分鐘出稿,自從有了漢王全語通R01,旅行再也不怕了
    以前因為英語不好,出國總是不敢跟人家說話,每到一個國家採訪記錄還要費時、費勁整理,以後,這些都不是事兒了。有了這款漢王全語通錄音筆R01,走遍世界都不怕。這個功能可以讓我們在錄音時,輕鬆將語音轉為文字,再也不用一個字一個字的敲出來了,112種語言都可錄音轉寫。非常節約時間。操作的時候很是簡單,直接對著錄音筆說話,錄音過程中會自動將語音轉寫為文字,後期還可以編輯。
  • 1小時錄音5分鐘出稿,自從有了漢王全語通R01,旅行再也不怕了
    以前因為英語不好,出國總是不敢跟人家說話,每到一個國家採訪記錄還要費時、費勁整理,以後,這些都不是事兒了。有了這款漢王全語通錄音筆R01,走遍世界都不怕。要總結它的主要功能,主要有4點:1、錄音轉寫。這個功能可以讓我們在錄音時,輕鬆將語音轉為文字,再也不用一個字一個字的敲出來了,112種語言都可錄音轉寫。非常節約時間。操作的時候很是簡單,直接對著錄音筆說話,錄音過程中會自動將語音轉寫為文字,後期還可以編輯。2、對話翻譯。
  • 在面試時面試會問到的問題,這些細節很重要
    春招面試的經驗和技巧,應該是這一次一定要注意的問題,今天給大家分享的是我在2015.11面試中總結的一些面試經驗和技巧,主要是java編程面試,我一共有面試了3次,分別是java集合,java並發編程,java多線程技術,都是今年參加的,所以簡單記錄了一下面試經驗,為後續的小夥伴提供一些乾貨,
  • 阿里巴巴團隊總結的「Java面試必問筆記」,完整版開放分享
    最近很多小夥伴找我要一些質量高,乾貨多的 Java面試 資料,於是我翻箱倒櫃,把這份阿里巴巴大牛總結的Java精講核心歸納筆記找出來,免費共享給大家!據說有小夥伴靠這份筆記順利進入 BAT 哦,所以一定要好好閱讀、學習到它的精髓!