2022 年你需要知道的 20 大 Kubernetes 面試問題和答案

已發表: 2021-01-04

Kubernetes 是當今市場上最受歡迎的容器編排工具之一。 該系統於 2014 年由 Google 開源,已成為 SoundCloud、SAP、紐約時報、eBay、華為等公司的最愛。

但是只有少數熟練的專家可以滿足對 Kubernetes 認證專業人員的巨大需求。 此外,當今的工作選擇程序非常重視技術概念。 因此,始終建議您事先準備好Kubernetes 面試問題的答案

Kubernetes 背後的基本思想是抽象底層計算機資源。 它使機器、存儲和網絡遠離其物理實現。 毫無疑問,該平台背後的勢頭正在上升。 Kubernetes 被稱為雲的操作系統。 了解有關 Kubernetes 及其網絡的更多信息。

如果您正在考慮從事該領域的職業,請完成下面給出的Kubernetes 面試問題 邁出第一步,熟悉基礎知識!

2022 年 Kubernetes 面試問答

1. 定義 Kubernetes。

Kubernetes 不僅僅是一個容器化平台。 它可以自動執行應用程序的部署、擴展和負載平衡任務。 此外,這種多容器管理工具與大多數雲提供商配合良好,並受益於熟練的開源社區的貢獻。 Kubernetes 是用 Go 編程語言編寫的。

2. 列出 Kubernetes 的一些關鍵特性。

    1. 自動調度——在集群節點上啟動容器的高級調度程序。
    2. 自我修復——可以重新調度、替換和重啟已經死亡的容器。
    3. 自動推出和回滾 - 支持推出和回滾。
    4. 水平擴展——根據要求向上或向下擴展應用程序的能力。
  1. 列出 Kubernetes 和 Docker Swarms 之間的區別。

Docker Swarm 是一個用於構建容器以進行生命週期管理的工具。 Kubernetes 比 Docker Swarm 更廣泛,因為它旨在編排集群並大規模協調節點集群。 儘管 Kubernetes 具有高度可擴展性,但 Docker Swarm 的擴展速度大約是 Kubernetes 的五倍。 此外,Docker Swarm 對不同容器之間的流量進行自動負載平衡,這需要在 Kubernetes 中進行手動干預。

但是,Kubernetes 還有其他功能。 它具有內置的日誌記錄和監控工具以及自動回滾機制。 Docker Swarm 不能像 Kubernetes 那樣進行自動回滾和自動擴展。

4. 應用在主機上的部署與在容器上的部署有何不同?

當您在主機上部署應用程序時,操作系統的內核允許在其上安裝許多庫。 所有應用程序共享該操作系統上存在的各種庫。 但是,在容器上部署應用程序的架構有點不同。

在容器化架構中,內核是應用程序之間唯一通用的東西。 其他應用程序不能侵占一個應用程序所需的庫和二進製文件。 因此,它們與系統的其餘部分隔離存在。 例如,如果一個特定的應用程序需要 Python,那麼只有該應用程序可以訪問它。

5、你對容器編排的理解是什麼? 你為什麼需要它?

假設一個應用程序有 4-5 個微服務。 現在,這些微服務將位於單獨的容器中。 因此,需要容器編排以允許服務相互通信並協同工作以滿足服務器的需求。 這個過程就像一個管弦樂隊,不同的樂器和諧地演奏來組成一個作品。

6. 什麼是 Kubelet?

Kubelet 是一個運行 Pod 的代理服務。 Pod 只不過是部署在同一主機上或具有一些公共資源的一組容器,例如單個 IP、卷等。kubelet 工作在 PodSpec 中提供的這些容器的描述上。 其主要目的是在每個節點上運行,確保容器健康運行,並進一步實現主節點和工作節點之間的通信。

閱讀:全棧面試問題和答案

7、集群在Kubernetes中的作用是什麼?

Kubernetes 允許您通過提供特定配置的集群服務來強制執行所需的狀態管理。 然後,這些集群服務在基礎架構中運行該配置。 該過程涉及以下步驟:

  • 部署文件包含要饋送到集群服務的所有配置。
  • 部署文件被輸入 API。
  • 現在,集群服務在環境中調度 Pod
  • 集群服務還確保運行正確數量的 pod

所以,Kubernetes 集群本質上是由 API、worker 節點和節點的 Kubelet 進程組成的。

8. Kubectl 是做什麼用的?

Kubectl 是一個控制 Kubernetes 集群的工具。 事實上,“ctl”代表控制。 它是一個命令行界面,允許您將命令傳遞到集群並管理 Kubernetes 組件。

9. 定義谷歌容器引擎。

Google Container Engine (GKE) 是一個管理平台,支持在 Google 的公共雲服務中運行的 Docker 容器和集群。 它是一個基於 Kubernetes 的開源引擎。

10.解釋Kubernetes中節點的使用。

節點提供運行 Pod 所需的服務。 也稱為 minions,節點可以根據集群在物理機或虛擬機上運行。 在 Kubernetes 中,節點是主要的工作機器,主組件管理系統中的每個節點。

現在您已經掌握了最新的基礎知識,讓我們再看一些Kubernetes 面試問題和答案,以獲得清晰的信息。

11. Kubernetes 架構的兩個主要組件是什麼?

主節點和工作節點組成了 Kubernetes 架構。 這兩個組件中都有多個內置服務。 例如,master 組件有 kube-controller-manager、kube-scheduler、etcd 和 kube-apiserver。 工作節點在每個節點上運行容器運行時、kubelet 和 kube-proxy 等服務。

閱讀: React 面試問答

12. 定義 kube-apiserver 和 kube-scheduler。

Kube-apiserver 是 maser 節點控制面板的前端,它暴露了所有的組件 API。 它在 Kubernetes 節點和主組件之間建立通信。 kube-scheduler 管理工作節點的工作負載。 它跟踪資源利用率以確保在合適的節點上完成調度。

13、簡述Kubernetes Controller Manager的作用。

在 Kubernetes 中,主節點上運行著各種進程,它們以 Kubernetes 控制器管理器的形式編譯在一起。 它是一個嵌入控制器的守護進程,包括以下內容:

  • 節點控制器:管理狀態,即創建、更新和刪除節點
  • 複製控制器:維護每個複制對象的 pod
  • 服務帳戶和令牌控制器:關注新命名空間的默認帳戶和 API 訪問令牌
  • 端點控制器:負責端點對象(pod 和服務)
  1. 雲控制器管理器做什麼?

雲控制器管理器 (CCM) 是一個允許嵌入特定於雲的控制循環的守護進程。 它從核心 Kubernetes 代碼中抽像出特定於雲的供應商代碼。 它還有助於管理與底層雲服務的通信。 它的設計基於插件機制,這意味著雲供應商使用插件將他們的代碼與 CCM 集成。

15.負載均衡器的作用是什麼?

負載均衡器提供了一種在不同後端服務之間分配網絡流量的標準方法,從而最大限度地提高了可擴展性。 根據工作環境,可以有兩種類型的負載均衡器——內部或外部。

內部負載均衡器可以自動平衡負載並將所需的配置分配給 Pod。 另一方面,外部負載均衡器將外部負載流量引導到後端 pod。 在 Kubernetes 中,這兩種負載均衡方法通過 kube-proxy 功能運行。

16. 如何在本地運行 Kubernetes?

您可以使用 Minikube 工具在本地運行 Kubernetes。 它在您的筆記本電腦上的虛擬機內運行一個單節點集群。 因此,它為剛入門並想嘗試 Kubernetes 的用戶提供了一種有效的方式。

17. 什麼是赫普斯特?

Heapster 是 Kubernetes 集群原生支持的性能監控和指標收集工具。 它像集群中的任何其他 pod 一樣運行,發現所有節點並從 Kubernetes 節點查詢信息。 這個容器管理工具通過機器上的代理工作。

18. Kubernetes 中的 ETCD 是什麼?

Etcd 是 Kubernetes 集群的配置、狀態和元數據的存儲。 它是用 Go 編程語言編寫的,表示給定時間點的集群狀態。 該數據存儲充當分佈式系統的骨幹。

19、你對容器資源監控的理解是什麼?

從用戶的角度來看,了解不同抽象層和級別的資源利用率至關重要,例如容器 pod、服務和整個集群。 每個級別都可以使用各種工具進行監控,即:

  • 格拉法納
  • 赫普斯特
  • 湧入數據庫
  • 顧問
  • 普羅米修斯
  1. 在使用 Kubernetes 時如何確保環境的安全性?

在使用 Kubernetes 時,您可以遵循並實施以下安全措施:

  • 限制 ETCD 訪問
  • 限制對節點的直接訪問
  • 定義資源配額
  • 一切都應該記錄在生產環境中
  • 使用授權存儲庫中的圖像
  • 為資源製定嚴格的規則和政策
  • 進行持續的安全和漏洞掃描
  • 定期應用安全更新

從世界頂級大學獲得軟件開發課程獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

包起來

在本文中,我們介紹了基本的Kubernetes 面試問題,以幫助您實現職業目標。 所以,接受學習挑戰,別忘了複習!

如果您想學習和掌握 Kubernetes、DevOps 等,請查看 IIIT-B 和 upGrad 的 Executive PG Program in Full Stack Software Development Program。

為未來的職業做準備

立即申請軟件工程碩士