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

K8s 常見(jiàn)面試題,讓你求職不迷路

云計(jì)算 云原生
你可以將容器運(yùn)行在不同的機(jī)器或節(jié)點(diǎn)中,并且可以將一些變化同步給這些容器,簡(jiǎn)單來(lái)說(shuō)我們只需要編寫 yaml 文件,告訴 k8s 我的預(yù)期是什么,其中同步變化的過(guò)程全部都交給 k8s 去完成。

前段時(shí)間在這個(gè)視頻中分享了 https://github.com/bregman-arie/devops-exercises 這個(gè)知識(shí)倉(cāng)庫(kù)。

這次繼續(xù)分享里面的內(nèi)容,本次主要以 k8s 相關(guān)的問(wèn)題為主。

k8s 是什么,為什么企業(yè)選擇使用它

k8s 是一個(gè)開源應(yīng)用,給用戶提供了管理、部署、擴(kuò)展容器的能力,以下幾個(gè)例子更容易理解:

  • 你可以將容器運(yùn)行在不同的機(jī)器或節(jié)點(diǎn)中,并且可以將一些變化同步給這些容器,簡(jiǎn)單來(lái)說(shuō)我們只需要編寫 yaml 文件,告訴 k8s 我的預(yù)期是什么,其中同步變化的過(guò)程全部都交給 k8s 去完成。

其實(shí)就是我們常說(shuō)的聲明式 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ù),沒(méi)有必要使用 k8s。
  • 第二種情況是如果是小團(tuán)隊(duì),或者容器規(guī)模較小時(shí)也不建議使用,除非你想使用 k8s 的滾動(dòng)發(fā)布和自擴(kuò)容能力,

不過(guò)這些功能運(yùn)維自己寫工具也能實(shí)現(xiàn)。

k8s 有哪些特性

  • 是自我修復(fù),k8s 對(duì)容器有著健康檢測(cè),比如使用啟動(dòng)探針、存活探針等,或者是容器 OOM 后也會(huì)重啟應(yīng)用嘗試修復(fù)。
  • 自帶負(fù)載均衡,使用 service 可以將流量自動(dòng)負(fù)載到后續(xù) Pod 中,如果 Pod 提供的是 http 服務(wù)這個(gè)夠用了,但如果是 grpc 這樣的長(zhǎng)鏈接,就需要使用 istio 這類服務(wù)網(wǎng)格,他可以識(shí)別出協(xié)議類型,從而做到請(qǐng)求級(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ì)將流量切回來(lái),同時(shí)逐步停止老的實(shí)例。
  • 水平擴(kuò)展能力:可以靈活的新增或者是減少副本的數(shù)量,當(dāng)然也可以自動(dòng)控制。
  • 數(shù)據(jù)加密:使用 secret 可以保存一些敏感的配置或者文件。

k8s 有著哪些對(duì)象

這個(gè)就是考察我們對(duì) k8s 是否是熟悉了,常用的有:

  • Pod
  • Service
  • ReplicationController
  • DaemonSet
  • namespace
  • ConfigMap 這個(gè)其實(shí)知道沒(méi)有太多作用,主要還是得知道在不同場(chǎng)景如何使用不同的組件。

哪些字段是必須的

這個(gè)問(wèn)題我也覺(jué)得意義不大,只要寫過(guò) 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í)候哪些對(duì)象用的比較多

  • 第一個(gè)肯定是 deployment,這應(yīng)該是最常見(jiàn)的部署方式。
  • service: 可以將流量負(fù)載到 Pod 中。
  • Ingress: 如果需要從集群外訪問(wèn) Pod 就得需要 Ingress 然后 配合域名訪問(wèn)。

為什么沒(méi)有 k get containers 這個(gè)命令

這個(gè)問(wèn)題主要是看對(duì) Pod 的理解,因?yàn)樵?nbsp;k8s 中 Pod 就是最小的單位了,如果想要訪問(wèn)容器可以在 Pod 中訪問(wèn)。

我們可以加上 -c 參數(shù)進(jìn)入具體的容器。

kubectl exec -it app -c istio-proxy

你認(rèn)為使用使用 k8s 的最佳實(shí)踐是什么

這個(gè)主要是看日常使用時(shí)有沒(méi)有遇到什么坑了:

  • 第一個(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

參考來(lái)源:https://github.com/bregman-arie/devops-exercises/blob/master/topics/kubernetes/README.md#kubernetes-101。

責(zé)任編輯:姜華 來(lái)源: crossoverJie
相關(guān)推薦

2009-06-02 15:11:11

Hibernate面試題查詢

2015-09-29 09:24:22

Node.js面試題

2025-04-07 08:00:00

KubernetesK8Spod

2021-01-14 05:12:19

Http協(xié)議面試

2011-05-18 13:36:23

DBA

2025-03-11 06:28:21

2009-06-16 14:03:16

Hibernate面試Hibernate面試

2021-07-16 10:20:56

Linux 硬鏈接Linux 系統(tǒng)

2023-07-25 16:55:15

Linuxinode

2018-01-26 14:39:55

Nginx網(wǎng)頁(yè)服務(wù)器

2011-03-29 14:31:41

CC++

2018-09-11 10:04:27

程序員面試數(shù)據(jù)結(jié)構(gòu)

2022-04-22 13:32:01

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

2024-09-26 10:10:00

MyBatis數(shù)據(jù)庫(kù)

2020-07-30 09:10:21

DockerK8s容器

2018-09-04 11:10:31

Python編程語(yǔ)言面試

2021-05-08 14:20:27

Redis面試數(shù)據(jù)庫(kù)

2025-02-27 08:09:52

2022-11-02 10:21:41

K8s pod運(yùn)維

2023-11-06 07:16:22

WasmK8s模塊
點(diǎn)贊
收藏

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