50個你必須瞭解的Kubernetes面試問題

Kubernetes一直是當今業界的流行語,也是最好的編排工具。它吸引了許多想要提高本身職業生涯的經驗豐富的專業人士。HuaWei,Pokemon,Box,eBay,Ing,Yahoo Japan,SAP,紐約時報,Open AI,Sound Cloud等跨國公司也使用Kubernetes。我相信你已經知道這些事實,這也是促使你打開這個Kubernetes面試問題文章緣由。前端

在這篇關於Kubernetes面試問題的文章中,我將討論在面試中提出的與Kubernetes相關的最重要問題。所以,爲了您的理解,我將此博客分爲如下4個部分:java

Kubernetes基本面試問題
基於架構的面試問題
基於場景的面試問題
多項選擇題
因此讓咱們開始吧!!node

基本的Kubernetes面試問題
這部分問題將包含您須要瞭解的與Kubernetes工做相關的全部基本問題。nginx

Q1。Kubernetes與Docker Swarm的區別如何?面試

Q2。什麼是Kubernetes?docker

Kubernetes是一個開源容器管理工具,負責容器部署,容器擴縮容以及負載平衡。做爲Google的創意之做,它提供了出色的社區,並與全部雲提供商合做。所以,咱們能夠說Kubernetes不是一個容器化平臺,而是一個多容器管理解決方案。編程

Q3。Kubernetes與Docker有什麼關係?
衆所周知,Docker提供容器的生命週期管理,Docker鏡像構建運行時容器。可是,因爲這些單獨的容器必須通訊,所以使用Kubernetes。所以,咱們說Docker構建容器,這些容器經過Kubernetes相互通訊。所以,可使用Kubernetes手動關聯和編排在多個主機上運行的容器。後端

Q4。在主機和容器上部署應用程序有什麼區別?api

請參考上圖。左側架構表示在主機上部署應用程序。所以,這種架構將具備操做系統,而後操做系統將具備內核,該內核將在應用程序所需的操做系統上安裝各類庫。所以,在這種框架中,您能夠擁有n個應用程序,而且全部應用程序將共享該操做系統中存在的庫,而在容器中部署應用程序時,體系結構則略有不一樣。安全

這種架構將有一個內核,這是惟一一個在全部應用程序之間惟一共同的東西。所以,若是有一個須要Java的特定應用程序,那麼咱們將得到訪問Java的特定應用程序,若是有另外一個須要Python的應用程序,則只有該特定應用程序才能訪問Python。

您能夠在圖表右側看到的各個塊基本上是容器化的,而且這些塊與其餘應用程序隔離。所以,應用程序具備與系統其他部分隔離的必要庫和二進制文件,而且不能被任何其餘應用程序侵佔。

Q5。什麼是Container Orchestration?
考慮一個應用程序有5-6個微服務的場景。如今,這些微服務被放在單獨的容器中,但若是沒有容器編排就沒法進行通訊。所以,因爲編排意味着全部樂器在音樂中和諧共處,因此相似的容器編排意味着各個容器中的全部服務協同工做以知足單個服務器的需求。

Q6。Container Orchestration須要什麼?
考慮到你有5-6個微服務用於執行各類任務的單個應用程序,全部這些微服務都放在容器中。如今,爲了確保這些容器彼此通訊,咱們須要容器編排。

正如您在上圖中所看到的,在沒有使用容器編排的狀況下,還存在許多挑戰。所以,爲了克服這些挑戰,容器編排就到位了。

Q7。Kubernetes有什麼特色?
Kubernetes的功能以下:

Q8。Kubernetes如何簡化容器化部署?
因爲典型應用程序將具備跨多個主機運行的容器集羣,所以全部這些容器都須要相互通訊。所以,要作到這一點,你須要一些可以負載平衡,擴展和監控容器的東西。因爲Kubernetes與雲無關而且能夠在任何公共/私有提供商上運行,所以必須是您簡化容器化部署的選擇。

Q9。您對Kubernetes的集羣瞭解多少?
Kubernetes背後的基礎是咱們能夠實施所需的狀態管理,個人意思是咱們能夠提供特定配置的集羣服務,而且集羣服務將在基礎架構中運行並運行該配置。

所以,正如您在上圖中所看到的,部署文件將具備提供給集羣服務所需的全部配置。如今,部署文件將被提供給API,而後由集羣服務決定如何在環境中安排這些pod,並確保正確運行的pod數量。

所以,位於服務前面的API,工做節點和節點運行的Kubelet進程,共同構成了Kubernetes集羣。

Q10。什麼是Google容器引擎?
Google Container Engine(GKE)是Docker容器和集羣的開源管理平臺。這個基於Kubernetes的引擎僅支持在Google的公共雲服務中運行的羣集。

Q11。什麼是Heapster?
Heapster是由每一個節點上運行的Kubelet提供的集羣範圍的數據聚合器。此容器管理工具在Kubernetes集羣上本機支持,並做爲pod運行,就像集羣中的任何其餘pod同樣。所以,它基本上發現集羣中的全部節點,並經過機上Kubernetes代理查詢集羣中Kubernetes節點的使用信息。

Q12。什麼是Minikube?
Minikube是一種工具,能夠在本地輕鬆運行Kubernetes。這將在虛擬機中運行單節點Kubernetes羣集。

Q13。什麼是Kubectl?
Kubectl是一個平臺,您可使用該平臺將命令傳遞給集羣。所以,它基本上爲CLI提供了針對Kubernetes集羣運行命令的方法,以及建立和管理Kubernetes組件的各類方法。

Q14。什麼是Kubelet?
這是一個代理服務,它在每一個節點上運行,並使從服務器與主服務器通訊。所以,Kubelet處理PodSpec中提供給它的容器的描述,並確保PodSpec中描述的容器運行正常。

Q15。你對Kubernetes的一個節點有什麼瞭解?

基於架構的Kubernetes訪談問題
這部分問題將涉及與Kubernetes架構相關的問題。

Q1。Kubernetes Architecture的不一樣組件有哪些?
Kubernetes Architecture主要有兩個組件 - 主節點和工做節點。以下圖所示,master和worker節點中包含許多內置組件。主節點具備kube-controller-manager,kube-apiserver,kube-scheduler等。而工做節點具備在每一個節點上運行的kubelet和kube-proxy。

Q2。你對Kube-proxy有什麼瞭解?
Kube-proxy能夠在每一個節點上運行,而且能夠跨後端網絡服務進行簡單的TCP / UDP數據包轉發。基本上,它是一個網絡代理,它反映了每一個節點上Kubernetes API中配置的服務。所以,Docker可連接的兼容環境變量提供由代理打開的羣集IP和端口。

Q3。您可否介紹一下Kubernetes中主節點的工做狀況?
Kubernetes master控制容器存在的節點和節點內部。如今,這些單獨的容器包含在容器內部和每一個容器內部,您能夠根據配置和要求擁有不一樣數量的容器。所以,若是必須部署pod,則可使用用戶界面或命令行界面部署它們。而後,在節點上調度這些pod,並根據資源需求,將pod分配給這些節點。kube-apiserver確保在Kubernetes節點和主組件之間創建通訊。

Q4。kube-apiserver和kube-scheduler的做用是什麼?
kube -apiserver遵循橫向擴展架構,是主節點控制面板的前端。這將公開Kubernetes主節點組件的全部API,並負責在Kubernetes節點和Kubernetes主組件之間創建通訊。

kube-scheduler負責工做節點上工做負載的分配和管理。所以,它根據資源需求選擇最合適的節點來運行未調度的pod,並跟蹤資源利用率。它確保不在已滿的節點上調度工做負載。

Q5。你能簡要介紹一下Kubernetes控制管理器嗎?
多個控制器進程在主節點上運行,可是一塊兒編譯爲單個進程運行,即Kubernetes控制器管理器。所以,Controller Manager是一個嵌入控制器並執行命名空間建立和垃圾收集的守護程序。它擁有責任並與API服務器通訊以管理端點。

所以,主節點上運行的不一樣類型的控制器管理器是:

Q6。什麼是ETCD?
Etcd是用Go編程語言編寫的,是一個分佈式鍵值存儲,用於協調分佈式工做。所以,Etcd存儲Kubernetes集羣的配置數據,表示在任何給定時間點的集羣狀態。

Q7。Kubernetes有哪些不一樣類型的服務?
如下是使用的不一樣類型的服務:

Q8。你對Kubernetes的負載均衡器有什麼瞭解?
負載均衡器是暴露服務的最多見和標準方式之一。根據工做環境使用兩種類型的負載均衡器,即內部負載均衡器或外部負載均衡器。內部負載均衡器自動平衡負載並使用所需配置分配容器,而外部負載均衡器將流量從外部負載引導至後端容器。

Q9。什麼是Ingress網絡,它是如何工做的?
Ingress網絡是一組規則,充當Kubernetes集羣的入口點。這容許入站鏈接,能夠將其配置爲經過可訪問的URL,負載平衡流量或經過提供基於名稱的虛擬主機從外部提供服務。所以,Ingress是一個API對象,一般經過HTTP管理集羣中服務的外部訪問,是暴露服務的最有效方式。

如今,讓我以一個例子向您解釋Ingress網絡的工做。

有2個節點具備帶有Linux橋接器的pod和根網絡命名空間。除此以外,還有一個名爲flannel0(網絡插件)的新虛擬以太網設備被添加到根網絡中。

如今,假設咱們但願數據包從pod1流向pod 4.請參閱下圖。

所以,數據包將pod1的網絡保留在eth0,並進入veth0的根網絡。
而後它被傳遞給cbr0,這使得ARP請求找到目的地,而且發現該節點上沒有人具備目的地IP地址。
所以,橋接器將數據包發送到flannel0,由於節點的路由表配置了flannel0。
如今,flannel守護程序與Kubernetes的API服務器通訊,以瞭解全部pod IP及其各自的節點,以建立pods IP到節點IP的映射。
網絡插件將此數據包封裝在UDP數據包中,其中額外的標頭將源和目標IP更改成各自的節點,並經過eth0發送此數據包。
如今,因爲路由表已經知道如何在節點之間路由流量,所以它將數據包發送到目標節點2。
數據包到達node2的eth0並返回到flannel0以解封裝並在根網絡命名空間中將其發回。
一樣,數據包被轉發到Linux網橋以發出ARP請求以找出屬於veth1的IP。
數據包最終穿過根網絡併到達目標Pod4。
Q10。您對雲控制器管理器有何瞭解?
Cloud Controller Manager負責持久存儲,網絡路由,從核心Kubernetes特定代碼中抽象出特定於雲的代碼,以及管理與底層雲服務的通訊。它可能會分紅幾個不一樣的容器,具體取決於您運行的是哪一個雲平臺,而後它可使雲供應商和Kubernetes代碼在沒有任何相互依賴的狀況下開發。所以,雲供應商開發他們的代碼並在運行Kubernetes時與Kubernetes雲控制器管理器鏈接。

各類類型的雲控制器管理器以下:

Q11。什麼是Container資源監控?
對於用戶而言,瞭解應用程序的性能和全部不一樣抽象層的資源利用率很是重要,Kubernetes經過在容器,pod,服務和整個集羣等不一樣級別建立抽象來考慮集羣的管理。如今,能夠監視每一個級別,這只是容器資源監視。

各類容器資源監控工具以下:

Q12。Replica Set 和 Replication Controller之間有什麼區別?
Replica Set 和 Replication Controller幾乎徹底相同。它們都確保在任何給定時間運行指定數量的pod副本。不一樣之處在於複製pod使用的選擇器。Replica Set使用基於集合的選擇器,而Replication Controller使用基於權限的選擇器。

Equity-Based選擇器:這種類型的選擇器容許按標籤鍵和值進行過濾。所以,在外行術語中,基於Equity的選擇器將僅查找與標籤具備徹底相同短語的pod。 示例:假設您的標籤鍵表示app = nginx,那麼,使用此選擇器,您只能查找標籤應用程序等於nginx的那些pod。
Selector-Based選擇器:此類型的選擇器容許根據一組值過濾鍵。所以,換句話說,基於Selector的選擇器將查找已在集合中說起其標籤的pod。 示例:假設您的標籤鍵在(nginx,NPS,Apache)中顯示應用程序。而後,使用此選擇器,若是您的應用程序等於任何nginx,NPS或Apache,則選擇器將其視爲真實結果。
Q13。什麼是Headless Service?
Headless Service相似於「普通」服務,但沒有羣集IP。此服務使您能夠直接訪問pod,而無需經過代理訪問它。

Q14。使用Kubernetes時能夠採起哪些最佳安全措施?
如下是使用Kubernetes時能夠遵循的最佳安全措施:

Q15。什麼是集羣聯邦?
在聯邦集羣的幫助下,能夠將多個Kubernetes集羣做爲單個集羣進行管理。所以,您能夠在數據中心/雲中建立多個Kubernetes集羣,並使用聯邦來在一個位置控制/管理它們。

聯合集羣能夠經過執行如下兩項操做來實現此目的。請參考下圖。

基於場景的面試問題
這部分問題將包含您在面試中可能遇到的各類基於場景的問題。

場景1:
假設一家基於單一架構的公司處理衆多產品。如今,隨着公司在當今的擴展行業的擴展,他們的單一架構開始引起問題。

您如何看待公司從單一服務轉向微服務並部署其服務容器?

解:

因爲公司的目標是從單一應用程序轉向微服務,它們最終能夠逐個構建,並行構建,只需在後臺切換配置。而後他們能夠將這些內置微服務放在Kubernetes平臺上。所以,他們能夠從一次或兩次遷移服務開始,並監控它們以確保一切運行穩定。一旦他們以爲一切順利,他們就能夠將其他的應用程序遷移到他們的Kubernetes集羣中。

場景2:
考慮一家擁有分佈式系統的跨國公司,擁有大量數據中心,虛擬機和許多從事各類任務的員工。

您認爲這樣 的公司如何以與Kubernetes一致的方式管理全部任務?

解:

正如咱們全部人都知道IT部門推出了數千個容器,其任務在分佈式系統中遍及全球衆多節點。

在這種狀況下,公司可使用可以爲基於雲的應用程序提供敏捷性,橫向擴展功能和DevOps實踐的東西。

所以,該公司可使用Kubernetes來定製他們的調度架構並支持多種容器格式。這使得容器任務之間的親和性成爲可能,從而提供更高的效率,併爲各類容器網絡解決方案和容器存儲提供普遍支持。

場景3:
考慮一種狀況,即公司但願經過維持最低成原本提升其效率和技術運營速度。

您認爲公司將如何實現這一目標?

解:

公司能夠經過構建CI/CD管道來實現DevOps方法,可是這裏可能出現的一個問題是配置可能須要一段時間才能啓動並運行。所以,在實施CI/CD管道以後,公司的下一步應該是在雲環境中工做。一旦他們開始處理雲環境,他們就能夠在集羣上安排容器,並能夠在Kubernetes的幫助下進行協調。這種方法將有助於公司縮短部署時間,並在各類環境中加快速度。

場景4:
假設一家公司想要修改它的部署方法,並但願創建一個更具可擴展性和響應性的平臺。

您如何看待這家公司可以實現這一目標以知足客戶需求?

解:

爲了給數百萬客戶提供他們指望的數字體驗,公司須要一個可擴展且響應迅速的平臺,以便他們可以快速地將數據發送到客戶網站。如今,要作到這一點,公司應該從他們的私有數據中心(若是他們使用任何)轉移到任何雲環境,如AWS。不只如此,他們還應該實現微服務架構,以便他們能夠開始使用Docker容器。一旦他們準備好基礎框架,他們就能夠開始使用最好的編排平臺,即Kubernetes。這將使團隊可以自主地構建應用程序並快速交付它們。

場景5:
考慮一家擁有很是分散的系統的跨國公司,期待解決總體代碼庫問題。

您認爲公司如何解決他們的問題?

那麼,爲了解決這個問題,咱們能夠將他們的單片代碼庫轉移到微服務設計,而後每一個微服務均可以被視爲一個容器。所以,全部這些容器均可以在Kubernetes的幫助下進行部署和協調。

場景6:
咱們全部人都知道,從單片到微服務的轉變解決了開發方面的問題,但卻增長了部署方面的問題。

公司如何解決部署方面的問題?

團隊能夠試驗容器編排平臺,例如Kubernetes,並在數據中心運行。所以,經過這種方式,公司能夠生成模板化應用程序,在五分鐘內部署它,並在此時將實際實例集中在暫存環境中。這種Kubernetes項目將有數十個並行運行的微服務,以提升生產率,即便節點出現故障,也能夠當即從新安排,而不會影響性能。

場景7:
假設一家公司但願經過採用新技術來優化其工做負載的分配。

公司如何有效地實現這種資源分配?

這個問題的解決方案就是Kubernetes。Kubernetes確保資源獲得有效優化,而且只使用特定應用程序所需的那些資源。所以,經過使用最佳容器編排工具,公司能夠有效地實現資源分配。

場景8:
考慮一家拼車公司但願經過同時擴展其平臺來增長服務器數量。

您認爲公司如何處理服務器及其安裝?

公司能夠採用集裝箱化的概念。一旦他們將全部應用程序部署到容器中,他們就可使用Kubernetes進行編排,並使用像Prometheus這樣的容器監視工具來監視容器中的操做。所以,利用容器的這種使用,在數據中心中爲它們提供更好的容量規劃,由於它們如今將受到更少的限制,由於服務和它們運行的硬件之間存在抽象。

場景9:
考慮一種狀況,公司但願向具備各類環境的客戶提供全部必需的分發。

您認爲他們如何以動態的方式實現這一關鍵目標?

該公司可使用Docker環境,組建一個橫截面團隊,使用Kubernetes構建Web應用程序。這種框架將幫助公司實如今最短的時間內將所需產品投入生產的目標。所以,在這樣的機器運行的狀況下,公司能夠向全部具備各類環境的客戶發放電子郵件。

場景10:
假設公司但願在不一樣的雲基礎架構上運行各類工做負載,從裸機到公共雲。

公司將如何在不一樣界面的存在下實現這一目標?

該公司能夠將其基礎設施分解爲微服務,而後採用Kubernetes。這將使公司在不一樣的雲基礎架構上運行各類工做負載。

多項選擇面試問題
這部分問題將包括多項面試問題,這些問題在面試中常常被問到。

Q1。什麼是Kubernetes集羣中的minions?
它們是主節點的組件。
它們是集羣的工做節點。[答案]
他們正在監控kubernetes中普遍使用的引擎。
他們是docker容器服務。
Q2。Kubernetes集羣數據存儲在如下哪一個位置?
KUBE-API服務器
Kubelet
ETCD [答案]
以上都不是
Q3。哪一個是Kubernetes控制器?
ReplicaSet
Deployment
Rolling Updates
ReplicaSet和Deployment [答案]
Q4。如下哪一個是核心Kubernetes對象?
Pods
Services
Volumes
以上全部[答案]
Q5。Kubernetes Network代理在哪一個節點上運行?
Master Node
Worker Node
全部節點[答案]
以上都不是
Q6。 節點控制器的職責是什麼?
將CIDR塊分配給節點
維護節點列表
監視節點的運行情況
以上全部[答案]
Q7。Replication Controller的職責是什麼?
使用單個命令更新或刪除多個pod
有助於達到理想狀態
若是現有Pod崩潰,則建立新Pod
以上全部[答案]
Q8。如何在沒有選擇器的狀況下定義服務?
指定外部名稱[答案]
指定具備IP地址和端口的端點
只需指定IP地址便可
指定標籤和api版本
Q9。1.8版本的Kubernetes引入了什麼?
Taints and Tolerations [答案]
Cluster level Logging
Secrets
Federated Clusters
Q10。Kubelet 調用的處理檢查容器的IP地址是否打開的程序是?
HTTPGetAction
ExecAction
TCPSocketAction [答案]
以上都不是

歡迎關注 Java架構師社區公衆號.
本文轉載自Java架構師必看 ,更多內容點擊查看!

相關文章
相關標籤/搜索