自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

2025年K8s最新高頻面試題,看看你能答對(duì)幾個(gè)?

云計(jì)算 云原生
本篇總結(jié)了關(guān)于2025年K8s最新高頻面試題,看看你能答對(duì)幾個(gè)?

Kubernetes的核心組件有哪些,各自作用是什么?

  • Master節(jié)點(diǎn)組件:

a.kube-apiserver:集群的控制入口,提供REST API接口。

b.kube-scheduler:負(fù)責(zé)Pod調(diào)度,決定Pod運(yùn)行在哪個(gè)節(jié)點(diǎn)上。

c.kube-controller-manager:運(yùn)行各種控制器,確保集群狀態(tài)與期望狀態(tài)一致。

d.etcd:分布式鍵值存儲(chǔ),保存集群所有配置信息。

  • Node節(jié)點(diǎn)組件:
  • kubelet:負(fù)責(zé)節(jié)點(diǎn)上的Pod生命周期管理。
  • kube-proxy:負(fù)責(zé)實(shí)現(xiàn)服務(wù)(Service)負(fù)載均衡和網(wǎng)絡(luò)代理。
  • 容器運(yùn)行時(shí)(如Docker、containerd):運(yùn)行容器鏡像的環(huán)境。

 Pod和Deployment的區(qū)別?

  • Pod:是Kubernetes最小的資源單位,一組容器的集合,生命周期短暫,可能隨時(shí)被重建。
  • Deployment:控制Pod副本的部署和管理,提供滾動(dòng)升級(jí)、回滾等功能,確保應(yīng)用的高可用性。

Service有哪些類(lèi)型,分別適用于什么場(chǎng)景?

  • ClusterIP(默認(rèn)):在集群內(nèi)訪問(wèn)服務(wù),不對(duì)外暴露。
  • NodePort:通過(guò)節(jié)點(diǎn)IP和靜態(tài)端口對(duì)外暴露服務(wù)(適合測(cè)試或臨時(shí)訪問(wèn))。
  • LoadBalancer:結(jié)合云服務(wù)提供商的負(fù)載均衡器,直接對(duì)外提供服務(wù)。
  • ExternalName:通過(guò)DNS別名映射到外部服務(wù)。

ConfigMap和Secret有什么區(qū)別?

  • ConfigMap:存儲(chǔ)明文非敏感配置,如環(huán)境變量、配置文件等。
  • Secret:存儲(chǔ)加密的敏感信息,如密碼、Token和證書(shū)。

 StatefulSet 和 Deployment 的主要區(qū)別是什么?

  • StatefulSet:用于有狀態(tài)的服務(wù),Pod具有穩(wěn)定的標(biāo)識(shí)(網(wǎng)絡(luò)、存儲(chǔ)),Pod啟動(dòng)和銷(xiāo)毀嚴(yán)格按照順序進(jìn)行(如數(shù)據(jù)庫(kù))。
  • Deployment:用于無(wú)狀態(tài)應(yīng)用,Pod可任意擴(kuò)展、縮減,無(wú)嚴(yán)格順序要求。

 什么是 Ingress,有哪些常用實(shí)現(xiàn)方式?

  • Ingress:提供集群外部到服務(wù)的HTTP/HTTPS訪問(wèn)的規(guī)則集合。
  • 常用實(shí)現(xiàn)方式:

a.NGINX Ingress Controller

b.Traefik

c.HAProxy

如何限制 Kubernetes 中 Pod 資源使用?

  • 通過(guò)在Pod中定義resources字段的requests(申請(qǐng))和limits(限制),如CPU、內(nèi)存等,防止資源爭(zhēng)用或失控。
yaml


復(fù)制編輯
resources:
  requests:
    cpu: "500m"
    memory: "256Mi"
  limits:
    cpu: "1"
    memory: "512Mi"

Pod如何實(shí)現(xiàn)親和性與反親和性?

親和性與反親和性通過(guò)節(jié)點(diǎn)親和性(NodeAffinity)和Pod親和性(PodAffinity/PodAntiAffinity)實(shí)現(xiàn)。

  • 親和性(Affinity):允許Pod根據(jù)節(jié)點(diǎn)或其他Pod的特征調(diào)度在特定節(jié)點(diǎn)。
  • 反親和性(Anti-affinity):防止Pod被調(diào)度到具有特定特征的節(jié)點(diǎn)或與其他Pod位于同一節(jié)點(diǎn)。

使用nodeAffinity指定Pod傾向于部署到特定節(jié)點(diǎn),而PodAntiAffinity則避免多個(gè)相似Pod集中在同一節(jié)點(diǎn)上,增強(qiáng)容災(zāi)能力。

Kubernetes如何實(shí)現(xiàn)健康檢查?

通過(guò)兩種探針:

  • Liveness Probe:檢測(cè)容器是否存活,如失敗則重啟。
  • Readiness Probe:檢測(cè)容器是否準(zhǔn)備好接收流量,如失敗則不轉(zhuǎn)發(fā)請(qǐng)求。

DaemonSet的典型應(yīng)用場(chǎng)景是什么?

答案:

  • 日志收集代理(如Fluentd)
  • 節(jié)點(diǎn)監(jiān)控Agent(如Node Exporter)
  • 網(wǎng)絡(luò)組件(如CNI插件)

DaemonSet確保每個(gè)節(jié)點(diǎn)運(yùn)行一個(gè)Pod,通常用于基礎(chǔ)設(shè)施服務(wù)。

Kubernetes的存儲(chǔ)卷(Volume)有哪些常見(jiàn)類(lèi)型?

答案:

  • emptyDir:生命周期跟隨Pod,僅適合臨時(shí)存儲(chǔ)。
  • hostPath:掛載節(jié)點(diǎn)文件系統(tǒng),可能有安全風(fēng)險(xiǎn)。
  • PersistentVolumeClaim (PVC):與PersistentVolume關(guān)聯(lián)的持久化存儲(chǔ)卷。
  • configMap與secret:掛載配置或敏感數(shù)據(jù)。

Kubernetes Pod驅(qū)逐(Eviction)原因有哪些?

答案:

  • 節(jié)點(diǎn)資源不足(CPU/內(nèi)存壓力)
  • 節(jié)點(diǎn)維護(hù)(kubectl drain操作)
  • Pod違反QoS策略(超出內(nèi)存limits)
  • 節(jié)點(diǎn)NotReady、宕機(jī)等異常狀態(tài)

如何實(shí)現(xiàn)節(jié)點(diǎn)隔離(Pod不調(diào)度到某節(jié)點(diǎn))?

答案:

  • 使用kubectl cordon標(biāo)記節(jié)點(diǎn)為不可調(diào)度。
  • 使用tainttoleration實(shí)現(xiàn)節(jié)點(diǎn)級(jí)別Pod調(diào)度控制。
bash


復(fù)制編輯
kubectl taint nodes node01 key=value:NoSchedule

Kubernetes的調(diào)度算法主要考慮哪些因素?

答案:

  • 節(jié)點(diǎn)資源充足性(CPU/內(nèi)存)
  • 節(jié)點(diǎn)親和性與反親和性
  • 污點(diǎn)(taint)和容忍度(toleration)
  • 自定義調(diào)度策略(調(diào)度擴(kuò)展器)

什么是Sidecar模式,舉一個(gè)典型例子?

答案:

Sidecar是指在Pod中使用輔助容器,增強(qiáng)主容器功能。典型例子:Istio中Envoy代理作為Sidecar,實(shí)現(xiàn)流量管理、安全策略、監(jiān)控等功能。

Kubernetes如何保證Secret的安全性?

答案:

  • Secret以Base64編碼存儲(chǔ)在etcd中。
  • 生產(chǎn)環(huán)境中應(yīng)啟用etcd加密。
  • RBAC限制訪問(wèn)Secret的權(quán)限。
  • 使用第三方密鑰管理系統(tǒng)(如Vault)更安全。

Kubernetes中QoS的三種類(lèi)型有哪些?

答案:

  • Guaranteed:設(shè)置相同的requests和limits,保證資源。
  • Burstable:requests < limits,可能資源被限制或驅(qū)逐。
  • BestEffort:沒(méi)有設(shè)置requests和limits,資源最低保證。

Kubernetes如何實(shí)現(xiàn)擴(kuò)容縮容(彈性伸縮)?

答案:

  • Pod級(jí):Horizontal Pod Autoscaler (HPA),根據(jù)CPU、內(nèi)存等指標(biāo)自動(dòng)擴(kuò)縮容。
  • 節(jié)點(diǎn)級(jí):Cluster Autoscaler,根據(jù)資源不足自動(dòng)增加或減少節(jié)點(diǎn)。

為什么要設(shè)置PodDisruptionBudget?

答案:

PodDisruptionBudget定義允許同時(shí)不可用Pod的數(shù)量,用于保護(hù)應(yīng)用高可用,避免維護(hù)或升級(jí)時(shí)服務(wù)中斷。

kube-proxy有哪些實(shí)現(xiàn)模式,各自?xún)?yōu)缺點(diǎn)?

答案:

  • userspace模式(已棄用):性能低,轉(zhuǎn)發(fā)開(kāi)銷(xiāo)大。
  • iptables模式(常用):性能中等,規(guī)則復(fù)雜,容易擴(kuò)展。
  • ipvs模式(推薦):性能高,負(fù)載均衡功能更強(qiáng)。

Kubernetes資源配額(ResourceQuota)如何工作?

答案:

通過(guò)ResourceQuota限制namespace內(nèi)可申請(qǐng)資源的總量(CPU、內(nèi)存、Pod數(shù)量),確保多租戶(hù)環(huán)境的公平資源分配。

什么是Admission Controller,常用的有哪些?

答案:

Admission Controller在API Server接收請(qǐng)求時(shí)對(duì)資源進(jìn)行準(zhǔn)入檢查,決定是否允許操作。

常用的有:

  • NamespaceLifecycle
  • LimitRanger
  • ResourceQuota
  • PodSecurityPolicy(已棄用,推薦OPA或Kyverno)
  • ValidatingAdmissionWebhook與MutatingAdmissionWebhook

什么是Vertical Pod Autoscaler (VPA),如何工作?

答案:

VPA根據(jù)Pod歷史資源使用情況自動(dòng)調(diào)整Pod資源請(qǐng)求(CPU/內(nèi)存)。當(dāng)Pod重建時(shí),以更合適的資源配置重啟。

如何排查Pod無(wú)法啟動(dòng)的問(wèn)題?

答案:

  • 查看Pod事件:
bash


復(fù)制編輯
kubectl describe pod <pod-name>
  • 檢查容器日志:
bash


復(fù)制編輯
kubectl logs <pod-name> -c <container-name>
  • 節(jié)點(diǎn)資源檢查:
bash


復(fù)制編輯
kubectl top nodes
  • 節(jié)點(diǎn)狀態(tài)檢查:
bash


復(fù)制編輯
kubectl get nodes

Kubernetes網(wǎng)絡(luò)策略(NetworkPolicy)如何實(shí)現(xiàn)Pod間通信控制?

答案:

NetworkPolicy通過(guò)label選擇Pod,基于Ingress/Egress規(guī)則定義允許或拒絕Pod間網(wǎng)絡(luò)訪問(wèn),配合網(wǎng)絡(luò)插件(如Calico)實(shí)現(xiàn)網(wǎng)絡(luò)隔離策略。

示例:

yaml


復(fù)制編輯
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-all
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  - Egress

以上規(guī)則將禁止namespace內(nèi)所有Pod的進(jìn)出流量。

如何查看 Kubernetes 集群中的資源使用情況?

答案:
可使用 kubectl top 命令:

bash


復(fù)制編輯
kubectl top nodes   # 節(jié)點(diǎn)資源
kubectl top pods    # Pod資源

需提前安裝 Metrics Server 組件。

Kubernetes PVC 與 PV 的關(guān)系是什么?

答案:

  • PV(PersistentVolume):管理員提供的持久化存儲(chǔ)資源。
  • PVC(PersistentVolumeClaim):用戶(hù)對(duì)存儲(chǔ)資源的申請(qǐng),PVC綁定到合適的PV上供Pod使用。

為什么不建議在生產(chǎn)環(huán)境中使用 latest 鏡像標(biāo)簽?

答案:

  • latest標(biāo)簽不明確,難以跟蹤版本。
  • latest鏡像變化頻繁,可能出現(xiàn)不可控的行為。
  • 影響滾動(dòng)升級(jí)和回滾機(jī)制。

Horizontal Pod Autoscaler (HPA) 基于什么指標(biāo)擴(kuò)縮容?

答案:
默認(rèn)基于CPU或內(nèi)存,也可自定義指標(biāo)(Custom Metrics)或外部指標(biāo)(External Metrics)進(jìn)行擴(kuò)縮容,如隊(duì)列長(zhǎng)度或HTTP請(qǐng)求數(shù)。

什么是 CSI(容器存儲(chǔ)接口),有什么作用?

答案:
CSI(Container Storage Interface)是一種標(biāo)準(zhǔn)接口,用于將各種存儲(chǔ)系統(tǒng)連接到Kubernetes。通過(guò)CSI插件,用戶(hù)可以使用任意外部存儲(chǔ)系統(tǒng),如Ceph、NFS、AWS EBS、阿里云盤(pán)等。

Kubernetes中,Pod資源限制超出時(shí)會(huì)發(fā)生什么?

答案:

  • 超過(guò)內(nèi)存(limits):Pod會(huì)被OOMKilled,容器自動(dòng)重啟。
  • 超過(guò)CPU(limits):Pod被CPU限流(CPU被throttle),性能受限,但不會(huì)被驅(qū)逐或殺掉。

Pod的狀態(tài)(Pod Phase)有哪些?

答案:

  • Pod的狀態(tài)(Pod Phase)通常包括以下幾種:

Pending(等待中)

a.Pod已被創(chuàng)建,但尚未調(diào)度到節(jié)點(diǎn)上,或正在拉取鏡像。

Running(運(yùn)行中)

  • Pod已經(jīng)成功調(diào)度到節(jié)點(diǎn)上,且所有容器都已創(chuàng)建并至少有一個(gè)容器處于運(yùn)行狀態(tài)。

Succeeded(成功)

  • Pod中的所有容器都已成功執(zhí)行并退出(容器狀態(tài)為0),常見(jiàn)于一次性任務(wù)型Pod。

Failed(失?。?/span>

  • Pod中的至少一個(gè)容器異常退出(非0退出碼),或者啟動(dòng)過(guò)程中發(fā)生了嚴(yán)重錯(cuò)誤。

Unknown(未知)

  • Pod狀態(tài)無(wú)法被Kubernetes節(jié)點(diǎn)準(zhǔn)確報(bào)告,可能節(jié)點(diǎn)故障、網(wǎng)絡(luò)中斷或其他通訊異常所致。

Kubernetes中,imagePullPolicy有哪些可選值,意義是什么?

答案:

  • 在 Kubernetes 中,imagePullPolicy 有以下三個(gè)可選值:

Always

a.latest 標(biāo)簽鏡像(默認(rèn)策略)。

b.鏡像頻繁更新,確??偰芾阶钚掳姹?。

  • 含義:每次啟動(dòng)容器時(shí),總是嘗試重新拉取鏡像,即使本地已存在該鏡像。
  • 適用場(chǎng)景

IfNotPresent

  • 使用固定版本號(hào)(例如:myapp:v1.0.1)的鏡像。
  • 降低鏡像拉取頻率,加速 Pod 啟動(dòng)。
  • 含義:只有當(dāng)本地不存在指定鏡像時(shí)才會(huì)去遠(yuǎn)程倉(cāng)庫(kù)拉取鏡像。
  • 適用場(chǎng)景

Never

  • 離線環(huán)境或鏡像提前加載到節(jié)點(diǎn)本地的情況。
  • 確保嚴(yán)格控制鏡像來(lái)源,不允許從遠(yuǎn)程倉(cāng)庫(kù)獲取。
  • 含義:永遠(yuǎn)不會(huì)主動(dòng)去拉取鏡像,必須使用本地已存在的鏡像。
  • 適用場(chǎng)景

默認(rèn)規(guī)則:

  • 當(dāng)鏡像標(biāo)簽為 latest 時(shí),默認(rèn)值為:Always。
  • 當(dāng)鏡像標(biāo)簽不是 latest 時(shí),默認(rèn)值為:IfNotPresent。

為什么生產(chǎn)環(huán)境中建議給Pod定義readinessProbe和livenessProbe?

答案:

  • readinessProbe:避免流量被轉(zhuǎn)發(fā)到未就緒Pod。
  • livenessProbe:自動(dòng)重啟異常Pod,提高服務(wù)可用性。

Kubernetes Pod 重啟策略有哪些?

答案:

  • Always(默認(rèn)):容器異常退出后自動(dòng)重啟。
  • OnFailure:容器異常退出時(shí)才重啟,成功完成則不重啟。
  • Never:無(wú)論成功失敗,容器退出后都不重啟。

Kubernetes容器探針(Probe)的三種探測(cè)方式是什么?

答案:

  • Exec:執(zhí)行命令,成功返回0則探測(cè)成功。
  • HTTPGet:通過(guò)HTTP請(qǐng)求健康檢查。
  • TCPSocket:通過(guò)TCP端口檢查容器是否正常運(yùn)行。

Kubernetes PersistentVolume的生命周期如何管理?

答案:

Provisioning(創(chuàng)建)

  • 靜態(tài)創(chuàng)建(Static Provisioning)
  • 管理員預(yù)先創(chuàng)建 PV,定義存儲(chǔ)容量、訪問(wèn)模式和存儲(chǔ)介質(zhì)。
  • 動(dòng)態(tài)創(chuàng)建(Dynamic Provisioning)
  • 用戶(hù)提交 PVC (PersistentVolumeClaim) 時(shí),動(dòng)態(tài)創(chuàng)建 PV。
  • 需要使用 StorageClass 來(lái)定義存儲(chǔ)配置和創(chuàng)建規(guī)則。

Binding(綁定)

  • 當(dāng)用戶(hù)創(chuàng)建 PersistentVolumeClaim (PVC) 時(shí),Kubernetes 會(huì)根據(jù) PVC 指定的要求(容量、訪問(wèn)模式、存儲(chǔ)類(lèi)別)尋找合適的 PV 并綁定。
  • PV 與 PVC 一旦綁定,進(jìn)入 Bound 狀態(tài),兩者形成一對(duì)一綁定關(guān)系。

Using(使用)

  • PV 綁定到 PVC 后,Pod 可通過(guò) PVC 掛載并使用存儲(chǔ)。
  • PV 在 Bound 狀態(tài)期間持續(xù)提供存儲(chǔ)服務(wù)。

Releasing(釋放)

  • 用戶(hù)刪除 PVC 后,對(duì)應(yīng)的 PV 狀態(tài)會(huì)變成 Released
  • 此時(shí)數(shù)據(jù)依舊存在,但無(wú)法再被其他 PVC 使用,等待管理員處理。

Reclaiming(回收策略)

PV 的回收策略(Reclaim Policy)決定 PV 被釋放后的行為??蛇x的策略包括:

策略

說(shuō)明

場(chǎng)景舉例

Retain

保留 PV 和其上的數(shù)據(jù),管理員手動(dòng)清理

數(shù)據(jù)保護(hù)場(chǎng)景

Recycle(已廢棄)

刪除數(shù)據(jù),清空 PV,回收再利用(K8s 1.23起已移除)

已廢棄,不再使用

Delete

刪除 PV 和后端存儲(chǔ)的數(shù)據(jù)

臨時(shí)數(shù)據(jù)或非關(guān)鍵場(chǎng)景

  • 推薦策略

a.對(duì)于關(guān)鍵數(shù)據(jù)或生產(chǎn)環(huán)境:使用 Retain,數(shù)據(jù)由管理員人工處理。

b.對(duì)于臨時(shí)數(shù)據(jù):使用 Delete,PV 和數(shù)據(jù)會(huì)自動(dòng)清理。

解釋一下Kubernetes中的ResourceQuota和LimitRange的區(qū)別?

ResourceQuota限制的是Namespace整體資源申請(qǐng)總量,LimitRange則限制單個(gè)Pod容器可申請(qǐng)的資源范圍(如CPU、內(nèi)存),以保證多租戶(hù)環(huán)境下的資源公平分配。

描述Kubernetes的RBAC授權(quán)原理?

RBAC通過(guò)Role定義資源操作權(quán)限,通過(guò)RoleBinding將權(quán)限綁定給用戶(hù)或ServiceAccount。ClusterRole與ClusterRoleBinding用于跨Namespace的權(quán)限定義。

Ingress Controller如何實(shí)現(xiàn)請(qǐng)求路由與流量管理?

Ingress Controller接收Ingress資源定義的HTTP(S)規(guī)則,根據(jù)Host、路徑(path)等將外部請(qǐng)求路由到不同的Service上。常用的Ingress Controller有NGINX、Traefik、HAProxy、Envoy等。

Service Mesh與Ingress有什么區(qū)別?

Ingress僅實(shí)現(xiàn)外部到集群服務(wù)的HTTP(s)流量入口路由,Service Mesh則覆蓋服務(wù)間通信,包括流量管理、服務(wù)發(fā)現(xiàn)、負(fù)載均衡、熔斷、監(jiān)控、認(rèn)證等更全面的能力。

什么是容器探針,分別解釋Liveness、Readiness、Startup探針?

  • Liveness探針:確定容器是否存活,失敗時(shí)重啟容器。
  • Readiness探針:容器是否準(zhǔn)備好接受流量,未就緒時(shí)不會(huì)接收請(qǐng)求。
  • Startup探針:用于慢啟動(dòng)應(yīng)用,確保啟動(dòng)完成前不觸發(fā)其他探針,以防止誤判重啟。
責(zé)任編輯:姜華 來(lái)源: 運(yùn)維開(kāi)發(fā)故事
相關(guān)推薦

2015-09-25 10:44:02

大數(shù)據(jù)Hadoop

2025-04-07 08:00:00

KubernetesK8Spod

2021-03-04 09:35:54

thisJavaScript開(kāi)發(fā)

2018-11-09 14:00:59

Python編程語(yǔ)言面試題

2021-01-22 11:58:30

MySQL數(shù)據(jù)庫(kù)開(kāi)發(fā)

2022-03-31 09:50:45

JS面試題

2021-03-01 09:39:34

閉包JavaScript開(kāi)發(fā)

2023-08-18 08:13:11

k8s容器

2021-02-23 12:43:39

Redis面試題緩存

2022-10-27 21:01:03

JavaScrip面試題開(kāi)發(fā)

2019-12-26 09:52:33

Redis集群線程

2021-08-05 05:04:50

熱部署模型字節(jié)

2018-05-30 10:47:15

Python 百度編程語(yǔ)言

2015-07-23 14:13:43

前端開(kāi)發(fā)面試題

2018-05-01 08:24:40

Python面試題開(kāi)發(fā)

2022-04-22 13:32:01

K8s容器引擎架構(gòu)

2019-11-26 10:30:11

CSS前端面試題

2020-08-31 12:20:07

Python面試題代碼

2022-08-22 18:57:29

React前端面試

2021-12-08 11:18:21

Spring Bean面試題生命周期
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)