這幾個月參與了幾場面試,設計了多道面試題,以爲能夠綜合考察應聘人對kubernetes的掌握狀況。在這裏分享下,供應聘人自查以及其餘面試官參考。面試
這些面試題的設計初衷並非考察kubernetes的使用。這種筆者認爲較爲流於表面,由於這些使用大多能夠經過查看文檔得到。筆者更多更多考察的是對於kubernetes的理解,包括對其架構、設計及一些相應原理的認識,以及對一些實踐經驗和技術視野的考察。後續有想到更好的題目,直接在此篇中持續更新。設計模式
基礎篇
基礎篇主要面向的初級、中級開發工程師職位,主要考察對k8s自己的理解。架構
- kubernetes包含幾個組件。各個組件的功能是什麼。組件之間是如何交互的。
- k8s的pause容器有什麼用。是否能夠去掉。
- k8s中的pod內幾個容器之間的關係是什麼。
- 一個經典pod的完整生命週期。
- k8s的service和ep是如何關聯和相互影響的。
- 詳述kube-proxy原理,一個請求是如何通過層層轉發落到某個pod上的整個過程。請求可能來自pod也可能來自外部。
- rc/rs功能是怎麼實現的。詳述從API接收到一個建立rc/rs的請求,到最終在節點上建立pod的全過程,儘量詳細。另外,當一個pod失效時,kubernetes是如何發現並重啓另外一個pod的?
- deployment/rs有什麼區別。其使用方式、使用條件和原理是什麼。
- cgroup中的cpu有哪幾種限制方式。k8s是如何使用實現request和limit的。
拓展實踐篇
拓展實踐篇主要面向的高級開發工程師、架構師職位,主要考察實踐經驗和技術視野。ide
- 設想一個一千臺物理機,上萬規模的容器的kubernetes集羣,請詳述使用kubernetes時須要注意哪些問題?應該怎樣解決?(提示能夠從高可用,高性能等方向,覆蓋到從鏡像中心到kubernetes各個組件等)
- 設想kubernetes集羣管理從一千臺節點到五千臺節點,可能會遇到什麼樣的瓶頸。應該如何解決。
- kubernetes的運營中有哪些注意的要點。
- 集羣發生雪崩的條件,以及預防手段。
- 設計一種能夠替代kube-proxy的實現
- sidecar的設計模式如何在k8s中進行應用。有什麼意義。
- 灰度發佈是什麼。如何使用k8s現有的資源實現灰度發佈。
- 介紹k8s實踐中踩過的比較大的一個坑和解決方式。