近幾年,Kubernetes 相關工作崗位在網際網路圈中越來越火爆。很多開發人員都因其發展前景與薪資而準備學習或加深瞭解。恰逢“三金四銀”好時節,文章從面試官角度剖析 11 個 Kubernetes 技術問題的面試技巧。希望可以為正在準備跳槽的工程師們提供一些幫助。
隨著 Kubernetes 的普及,IT 專業人員需要具備在生產中執行該技術所需的技能和經驗。本文 11 道面試題考察的並不是 Kubernetes 的使用,而是人們對於 Kubernetes 的理解,包括對其架構、原理的認識以及一些實踐經驗和技術視野。如果你正在學習 Kubernetes,你可以把以下問題作為實踐方向。如果你是求職者,你可以針對這些問題自問自答,進行面試準備。
Kubernetes 是一個開源的、用於管理雲平臺中多個主機上的容器化應用。它的標的是讓部署容器化應用變得簡單且高效。同時,它提供了應用部署、規劃、更新、維護的機制。
這個問題很簡單,答案也很基礎,但答題者對它的理解不應該只限於死記硬背。它考察的可以只是一個概念,也可以是你對容器編排、對容器的完整認識。從這個問題出發,我們應該能圍繞 Kubernetes 的定義、作用和優缺點進行全面闡述。這裡讀者也要註意一點,以下問題皆需根據實際情況與能力回答,請勿照搬照抄!
容器編排的好處有很多,這裡僅以微服務架構為例。微服務是解決企業 IT 長期演進的一種方案,適用於迭代發展很快的系統。同時,它是一種考慮小型團隊人員擴充套件以處理大問題的方法。
這個問題也可以參照《如何為 Kubernetes 提供案例[1]》的一些觀點。
關於這個問題,大家可以多思考關於容器和 Kubernetes 在速度、效率和可靠性方面的價值。
對面試官來說,如果應聘者之前有過用 Kubernetes 管理容器化微服務的經驗,這會是個考察微服務架構瞭解水平的絕佳機會,值得繼續追問。
為了執行 Kubernetes,瞭解它在多個平臺或基礎設施環境中的構建方法至關重要。關於這一點,你可以閱讀 Kubernetes 相關官方檔案[2]複習一下。
對於要學習 Kubernetes 或者需要本地開發的開發人員來說,Minikube 是一個不錯的選擇。透過使用 Minikube,我們可以非常快捷地在本地部署一套單節點的 Kubernetes 叢集,並且對物理資源沒有過高的要求,有一種開箱即用的感覺。在實際生產中,許多組織會使用 VM、IaaS 和本地資源的組合,應聘者可以就此展開,思考 Minikube 的使用情況以及註意事項。
第 6 問:如何在 Kubernetes 中實現負載均衡?
這個問題是個重要考點,它也有關 Kubernetes 的主要優勢。如果你無法描述 Kubernetes 中的負載均衡,那麼你就錯過了一個給面試官留下好印象的機會。
如果你想延伸更多與技術能力相關的問題,以下內容值得參考:
-
你能解釋 Deployment、ReplicaSets、StatefulSets、Pod、CronJob 的不同用途嗎?
-
Kubernetes 如何處理永續性?
-
服務和 Ingress 的作用是什麼?
-
你何時會使用像 ConfigMap 或 secret 這樣的東西?
-
Pod 親和性作用是什麼?
-
你能舉例說明何時使用 Init Container 麼?
-
什麼是 Sidecar 容器?你能給出一個用例,說明你為什麼要使用它麼?
眾所周知,在測試或開發環境中執行 Kubernetes 與在生產環境中執行 Kubernetes 是很不一樣的。如果面試官想深入瞭解應聘者的實踐經驗,他們會在這個方向進行延伸。這是個主動分享、展示實力的好機會!
第 7 問:在構建和管理生產叢集時遇到的主要問題是什麼?
面試官之所以要問這個問題,很多時候是因為他想知道你解決問題的實際方法和技術水平。所以你的答案中必須包括一個有相當難度的部署問題和與之相應的解決方案。
作為技術人員,過硬的技術水平固然重要,但大家也要註重培養自己的全域性意識和戰略思維。這也是面試中的一項重點考察內容,面試官會以具體技術為切入口,考察你對公司決策、技術選擇和業務拓展的認識和理解。
第 8 問:為什麼你會建議公司在雲中構建自己的 Kubernetes 叢集而不是使用託管服務?
在回答這個問題時,有的面試官會很欣賞那些詢問企業戰略側重點並提出建議的應聘者。
參加過面試的讀者應該多有體會,面試時,面試官的問題絕不會僅限於 Kubernetes。這點不難理解,如果一名工程師聲稱自己有 N 年 Kubernetes 使用經驗,卻連 Helm 都沒聽說過,那他的水平完全不可信。
下麵的問題都圍繞 Kubernetes 相關技術,大家可以自我考察:
第 9 問:什麼是 Istio 和 Linkerd?
Istio 是一種微服務,它為無縫連線、管理和保護不同微服務網路提供了一種簡單的方式,同時不需要在服務中改變任何程式碼。
Linkerd 是一款開源網路代理,旨在作為服務網格進行部署,一般用於在應用程式內管理、控制和監視服務到服務通訊的專用層。
第 10 問:什麼是 Kubernetes Operator?
答案一:Kubernetes Operator 是一種在 Kubernetes API 上構建應用程式併在 Kubernetes 上驅動應用程式的方法。
答案二:Kubernetes Operator 允許開發人員為需要維護狀態的應用程式提供額外知識,從而擴充套件可在 Kubernetes 上執行的應用程式型別。
為什麼同一個概念可以有兩個答案?它們之間又有什麼本質聯絡?你對它又是怎麼理解的?這些都是各位讀者可以深入思考的問題。
除了以上 11 問,讀者也可以參考以下 7 個建議,在日常中提升技術水平,總結實踐經驗:
-
https://enterprisersproject.com/article/2017/10/how-make-case-kubernetes
-
https://kubernetes.io/docs/concepts/architecture/
獲取更多面試資料,掃描下方二維碼加微信好友,備註『加群』。
長按二維碼向我轉賬
受蘋果公司新規定影響,微信 iOS 版的贊賞功能被關閉,可透過二維碼轉賬支援公眾號。