k8s?常見面試題集錦
k8s 是什么,為什么企業(yè)選擇使用它
前段時(shí)間在這個(gè)視頻中分享了 https://github.com/bregman-arie/devops-exercises 這個(gè)知識(shí)倉庫。
k8s 是一個(gè)開源應(yīng)用,給用戶提供了管理、部署、擴(kuò)展容器的能力,以下幾個(gè)例子更容易理解:
你可以將容器運(yùn)行在不同的機(jī)器或節(jié)點(diǎn)中,并且可以將一些變化同步給這些容器,簡單來說我們只需要編寫 yaml
文件,告訴 k8s
我的預(yù)期是什么,其中同步變化的過程全部都交給 k8s 去完成。
其實(shí)就是我們常說的聲明式 API
- 第二個(gè)特點(diǎn)剛才已經(jīng)提到了,它可以幫我們一鍵管理多個(gè)容器,同步所有的變更。
- 可以根據(jù)當(dāng)前的負(fù)載調(diào)整應(yīng)用的副本數(shù),負(fù)載高就新創(chuàng)建幾個(gè)應(yīng)用實(shí)例,低就降低幾個(gè),這個(gè)可以手動(dòng)或自動(dòng)完成。
什么時(shí)候使用或者不使用 k8s
- 如果主要還是使用物理機(jī)這種低級(jí)別的基礎(chǔ)設(shè)施的話,不太建議使用
k8s
,這種情況通常是比較傳統(tǒng)的業(yè)務(wù),沒有必要使用k8s
。
第二種情況是如果是小團(tuán)隊(duì),或者容器規(guī)模較小時(shí)也不建議使用,除非你想使用 k8s 的滾動(dòng)發(fā)布和自擴(kuò)容能力,不過這些功能運(yùn)維自己寫工具也能實(shí)現(xiàn)。
k8s 有哪些特性
- 是自我修復(fù),
k8s
對容器有著健康檢測,比如使用啟動(dòng)探針、存活探針等,或者是容器OOM
后也會(huì)重啟應(yīng)用嘗試修復(fù)。 - 自帶負(fù)載均衡,使用
service
可以將流量自動(dòng)負(fù)載到后續(xù) Pod 中,如果 Pod 提供的是 http 服務(wù)這個(gè)夠用了,但如果是 grpc 這樣的長鏈接,就需要使用 istio 這類服務(wù)網(wǎng)格,他可以識(shí)別出協(xié)議類型,從而做到請求級(jí)別的負(fù)載均衡。 Operator
自動(dòng)運(yùn)維能力:k8s 可以根據(jù)應(yīng)用的運(yùn)行情況自動(dòng)調(diào)整當(dāng)前集群的 Pod 數(shù)量、存儲(chǔ)等,拿Pulsar
舉例,當(dāng)流量激增后自動(dòng)新增broker
,磁盤不足時(shí)自動(dòng)擴(kuò)容等。- 滾動(dòng)更新能力:當(dāng)我們發(fā)版或者是回滾版本的時(shí)候,k8s 會(huì)等待新的容器啟動(dòng)之后才會(huì)將流量切回來,同時(shí)逐步停止老的實(shí)例。
- 水平擴(kuò)展能力:可以靈活的新增或者是減少副本的數(shù)量,當(dāng)然也可以自動(dòng)控制。
- 數(shù)據(jù)加密:使用
secret
可以保存一些敏感的配置或者文件。
k8s 有著哪些對象
這個(gè)就是考察我們對 k8s
是否是熟悉了,常用的有:
- Pod
- Service
- ReplicationController
- DaemonSet
- namespace
- ConfigMap
這個(gè)其實(shí)知道沒有太多作用,主要還是得知道在不同場景如何使用不同的組件。
哪些字段是必須的
這個(gè)問題我也覺得意義不大,只要寫過 yaml
就會(huì)知道了,metadata, kind, apiVersion
apiVersion: apps/v1 kind: Deployment metadata: labels: app: app name: app
kubectl 是什么
其實(shí)就是一個(gè) k8s 的 命令行客戶端。
當(dāng)你部署應(yīng)用的時(shí)候哪些對象用的比較多
- 第一個(gè)肯定是
deployment
,這應(yīng)該是最常見的部署方式。 service
: 可以將流量負(fù)載到 Pod 中。Ingress
: 如果需要從集群外訪問 Pod 就得需要Ingress
然后 配合域名訪問。
為什么沒有 k get containers 這個(gè)命令
這個(gè)問題主要是看對 Pod
的理解,因?yàn)樵?nbsp;k8s
中 Pod
就是最小的單位了,如果想要訪問容器可以在 Pod 中訪問。
我們可以加上 -c
參數(shù)進(jìn)入具體的容器。
kubectl exec -it app -c istio-proxy
你認(rèn)為使用使用 k8s 的最佳實(shí)踐是什么
這個(gè)主要是看日常使用時(shí)有沒有遇到什么坑了:
第一個(gè)就是要驗(yàn)證 yaml
內(nèi)容是否正確,這個(gè)確實(shí)很重要,一旦執(zhí)行錯(cuò)了后果很嚴(yán)重,比如使用 helm 的時(shí)候最好豈容 dry-run
和 debug
,先看看生成的 yaml
是否是預(yù)期想要的。
helm upgrade app --dry-run --debug
- 第二個(gè)限制資源的使用,比如 CPU 和 內(nèi)存,這個(gè)也很重要,如果不設(shè)置一旦應(yīng)用出現(xiàn) bug 可能導(dǎo)致整個(gè) k8s 集群都受到影響。
- 為 Pod,deployment 指定標(biāo)簽,用于分組。
# 資源限制 resources: limits: cpu: 200m memory: 200Mi requests: cpu: 100m memory: 100Mi
以上就是k8s 常見面試題集錦的詳細(xì)內(nèi)容,更多關(guān)于k8s 面試集錦的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
k8s?pod和service網(wǎng)絡(luò)暴露詳解
這篇文章主要介紹了借助iptables的路由轉(zhuǎn)發(fā)功能,打通k8s集群內(nèi)的pod和service網(wǎng)絡(luò),與外部網(wǎng)絡(luò)聯(lián)通,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11基于openEuler的Ceph分布式存儲(chǔ)集群部署指南
本文詳細(xì)介紹了如何在openEuler22.03LTS操作系統(tǒng)上部署Ceph分布式存儲(chǔ)集群,包括環(huán)境準(zhǔn)備、軟件倉庫配置、集群初始化、存儲(chǔ)節(jié)點(diǎn)部署、存儲(chǔ)池創(chuàng)建、監(jiān)控集成和性能優(yōu)化等步驟,感興趣的朋友一起看看吧2025-03-03最新青龍面板2.10.2搭建+XDD-PLUS的保姆級(jí)教程
這篇文章主要介紹了最新青龍面板2.10.2搭建+XDD-PLUS的保姆級(jí)教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05kubernetes?Volume存儲(chǔ)卷configMap學(xué)習(xí)筆記
這篇文章主要為大家介紹了kubernetes?Volume存儲(chǔ)卷configMap學(xué)習(xí)筆記,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05CentOS 7.9 升級(jí)內(nèi)核 kernel-ml-5.6.14版本的方法
這篇文章主要介紹了CentOS 7.9 升級(jí)內(nèi)核 kernel-ml-5.6.14版本,默認(rèn)內(nèi)核版本為3.10.0,現(xiàn)升級(jí)到 5.6.14 版本,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10詳解k8s ConfigMap 中 subPath 字段和 items
volumeMounts.subPath 屬性可用于指定所引用的卷內(nèi)的子路徑,而不是其根路徑,這篇文章主要介紹了詳解k8s ConfigMap 中 subPath 字段和 items 字段,需要的朋友可以參考下2023-03-03IoT?邊緣集群Kubernetes?Events告警通知進(jìn)一步配置詳解
這篇文章主要為大家介紹了IoT?邊緣集群Kubernetes?Events告警通知進(jìn)一步配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02