微信公眾號搜索 DevOps和k8s全棧技術 ,關注之後,在後臺回復 k8s面試題,可獲取最新完整的kubernetes面試題pdf文檔,也可掃描文章最後的二維碼關注公眾號。
kubernetes是什麼?Kubernetes是什麼?kubernetes,簡稱K8s,是用8代替8個字符「ubernete」而成的縮寫。是一個開源的,用於管理雲平臺中多個主機上的容器化的應用,Kubernetes的目標是讓部署容器化的應用簡單並且高效(powerful),Kubernetes提供了應用部署,規劃,更新,維護的一種機制。
kubernetes面試題匯總
1.kubernetes是什麼?
Kubernetes(k8s)是自動化容器操作的開源平臺,這些操作包括部署,調度和節點集群間擴展。如果你曾經用過Docker容器技術部署容器,那麼可以將Docker看成Kubernetes內部使用的低級別組件。Kubernetes不僅僅支持Docker,還支持Rocket,這是另一種容器技術。
使用Kubernetes可以:
2.Kubernetes 有哪些特點?
可移植: 支持公有雲,私有雲,混合雲,多重雲(multi-cloud)自動化: 自動部署,自動重啟,自動複製,自動伸縮/擴展3.Kubernetes架構和組件
4.Kubernetes所能識別的最小單元什麼?
Pod就是Kubernetes所能識別的最小單元。它包含了一個或多個的容器並看做是一個整體的單元。基本上,可以說Pod就是一個單一的微服務。
5.K8S與Swarm的共同點是什麼?
Docker Swarm和Kubernetes都是用來編排容器的,但是是以不同的方式。6.關於集群
集群是一組節點,這些節點可以是物理伺服器或者虛擬機,之上安裝了Kubernetes平臺。下圖展示這樣的集群。注意該圖為了強調核心概念有所簡化。這裡可以看到一個典型的Kubernetes架構圖。
7.在安裝Kubernetes時會因為無法拉取gcr.io鏡像
在已知鏡像名稱和標籤的情況,可以通過阿里雲鏡像倉庫+GitHub用Dockerfile重新打包gcr.io 鏡像,然後安裝時從阿里雲鏡像倉庫直接下載再重命名為gcr.io鏡像。在未知鏡像名稱和標籤的情況,需要先找一臺可以科學上網的機器來裝一遍,再通過docker images 查看準確的鏡像名稱和標籤。
8.是否手動創建Pod,如果想要創建同一個容器的多份拷貝,需要一個個分別創建出來麼,能否將Pods劃到邏輯組裡?
Replication Controller確保任意時間都有指定數量的Pod「副本」在運行。如果為某個Pod創建了Replication Controller並且指定3個副本,它會創建3個Pod,並且持續監控它們。如果某個Pod不響應,那麼Replication Controller會替換它,保持總數為3.如下面的動畫所示:
9.centos下如何配置主機互信
10.如何監控部署在Docker容器上的應用程式?Kubernetes可以通過設定livenessProbe屬性來為一個Pod做健康檢測。
11.怎樣從外面訪問一個跑著許多Docker實例的應用程式?
通過使用Kubernetes的Service資源,可以有多種方案實現對一個跑在Kubernetes裡的帶有多個實例的Docker應用的訪問。可以使用一個公網IP來創建一個Service,一個負載均衡Service,或者說,如果是HTTP的情況下,用一個Kubernetes的Ingress資源。12.Docker + Kubernetes只能在Linux環境下運行嗎?
不,Docker加入對Windows的支持已經有一段時間了,而就在1.5版本的時候,Kubernetes加入了對Windows Server容器的支持,控制器仍然還跑在Linux上,然後Kubelet和Kubeproxy則可以在Windows上運行。13.Kubernetes和Openstack發展方向是怎樣的?它們之間存在很多分歧嗎?
Kubernetes和Openstack是兩個完全不同的東西;真的沒有必要去比較它們,因為它們根本從來都碰不到一起。你可以在Openstack上跑Kubernetes,你也可以使用Kubernetes來編排Openstack,但是它們始終還是兩個截然不同的東西。
14.Mirantis提供對Kubernetes的支持嗎?
到目前為止,Mirantis的產品只限於Openstack,這也即是我們所支持的全部;當我們加入對Kubernetes的支持時,事情可能會有一定程度的轉變,但是就目前而言,情況就是這樣。
15.怎麼把一個公網IP分配給一個跑在Openstack虛擬機裡的Docker容器?只要像分配任何其他基於Openstack的公網IP一樣通過浮動IP去做就行。
16.應用和運行時平臺是怎樣解耦的?
容器是設計成自包含的。因此可以創建一個包含了系統的所有內容,讓它擁有完備的移植性。我們也應該明白一點,應用程式不可能完全和運行時平臺解耦。舉個例子,你如果有一個應用是用Mono(Linux版本的.NET)寫的,你可以用Linux上的Kubernetes來運行它,但是直接用Windows Server容器跑的話就只能運行在Windows上的Kubernetes了。
17.Docker/Kubernetes可以用在Windows服務或者實際的應用,資料庫,還有存儲嗎,或者說你可以創建windows的虛擬機然後在Kubernetes下面跑嗎?
聽上去所說的「實際應用」真的有點像是在說「寵物」類應用。如果是的話,那麼最好還是用虛擬機來跑吧。
18.是不是可以這樣說,Kubernetes的編排就像一個流程圖?一系列一個接一個的動作?
理想情況下,這是對的,但是實際上它並不是這樣 —— 反正不是直接如此。當你在YAML文件裡包含了多個定義時,沒有辦法保證它們會以怎樣特定的順序去執行。要解決這個問題實現「流程圖」效果的話,你可以看下Kubernetes新的APPController。
19.雖然容器是分層的,在宿主作業系統這塊每個分層也是重複部署的。Openstack會為此提供一個輕量級的容器宿主虛擬機嗎?
與其操心有沒有一個輕量級的容器宿主虛擬機鏡像,還不如考慮下用一個最小集作業系統作為容器的基礎層,比如Alpine Linux。20.企業部署k8s,多少節點合適
多少個節點看業務,還有物理機配置,假如一個物理機配置特別高,那你部署十個節點,比你用100 臺低配置的機器都要跑的業務更多。
21.上萬規模的容器的kubernetes集群,使用kubernetes時需要注意哪些問題?
上萬規模需要用ipvs做轉發,網絡用calico性能更好。
22.kubernetes的運維中有哪些注意的要點?
注意做好hpa,還有livenessProbe和readnessProbe這種探測,數據持久化,監控等
23.kube-apiserver和kube-scheduler的作用是什麼?
kube–apiserver遵循橫向擴展架構,並且是主節點控制面板的前端。這將公開Kubernetes主節點組件的所有API,並負責在Kubernetes節點和Kubernetes主組件之間建立通信。kube-scheduler負責在工作節點上分配和管理工作負載。因此,它根據資源需求選擇最合適的節點來運行Pod,並跟蹤資源利用率。它可以確保未在已滿的節點上調度工作負載。
24.您能簡要介紹一下Kubernetes控制器管理器嗎?
多個控制器進程在主節點上運行,但被編譯在一起以作為單個進程(即Kubernetes Controller Manager)運行。因此,Controller Manager是一個守護程序,它嵌入控制器並執行名稱空間創建和垃圾回收。它負責並與API伺服器通信以管理端點。因此,在主節點上運行的不同類型的控制器管理器為:
25.什麼是ETCD?
Etcd用Go程式語言編寫,並且是用於在分布式工作之間進行協調的分布式鍵值存儲。因此,Etcd存儲Kubernetes集群的配置數據,該數據表示集群在任何給定時間點的狀態。
26.Kubernetes中有哪些不同類型的服務?
27.什麼是Ingress網絡?它如何工作?
入口網絡是充當Kubernetes集群入口點的規則的集合。這允許入站連接,可以將其配置為通過可訪問的URL,負載平衡流量或通過提供基於名稱的虛擬主機在外部提供服務。因此,Ingress是一個API對象,通常通過HTTP管理群集中對服務的外部訪問,這是公開服務的最強大方法。現在,讓我通過一個示例向您解釋Ingress網絡的工作原理。有2個節點具有帶有Linux網橋的pod和根網絡名稱空間。除此之外,還在根網絡中添加了一個名為flannel0(網絡插件)的新虛擬乙太網設備。現在,假設我們希望數據包從pod1到pod4。請參考下圖。
因此,數據包在eth0離開pod1的網絡,在veth0進入根網絡。
然後將其傳遞給cbr0,後者發出ARP請求以查找目標,並且發現該節點上沒有人具有目標IP位址。
因此,網橋將數據包發送到flannel0,因為節點的路由表已配置了flannel0。現在,法蘭絨守護程序與Kubernetes的API伺服器進行對話,以了解所有Pod IP及其各自的節點,以創建Pod IP到節點IP的映射。
網絡插件將該數據包包裝在帶有額外報頭的UDP數據包中,該報頭將源IP和目標IP更改為它們各自的節點,然後通過eth0發送此數據包。
現在,由於路由表已經知道如何在節點之間路由流量,因此它將數據包發送到目標節點2。
數據包到達node2的eth0,然後返回flannel0進行解封裝,然後將其發送回根網絡名稱空間。
再次將數據包轉發到Linux網橋,以發出ARP請求,以找出屬於veth1的IP。
28.什麼是聯合集群?藉助聯合集群,可以將多個Kubernetes集群作為一個集群進行管理。因此,您可以在一個數據中心/雲中創建多個Kubernetes集群,並使用聯合在一個地方控制/管理所有集群。
29.您能否簡要介紹一下Kubernetes中主節點的工作?
Kubernetes主節點控制節點,並且在節點內部存在容器。現在,這些單獨的容器包含在Pod內,每個Pod內,根據配置和要求,您可以擁有各種數量的容器。因此,如果必須部署Pod,則可以使用用戶界面或命令行界面來部署它們。然後,將這些Pod調度在節點上,並根據資源需求將Pod分配給這些節點。kube-apiserver確保在Kubernetes節點和主組件之間建立了通信。
30.Kubelet 調用的處理檢查容器的IP位址是否打開的程序是?技術交流
學無止境,了解更多關於kubernetes/docker/devops/openstack/openshift/linux/IaaS/PaaS相關內容,想要獲取更多資料和免費視頻,可按如下方式進入技術交流群
微信:luckylucky421302
按如下指紋可關注公眾號
參考連結如下:
https://www.edureka.co/blog/interview-questions/kubernetes-interview-questions