Linux運(yùn)維工程師面試題(9)

Linux運(yùn)維工程師面試題(9)
1 pod 的生命周期
2 探針類型
3 探針方式
4 探針結(jié)果
5 Pod 重啟策略
6 鏡像獲取策略
7 k8s 的服務(wù)類型
8 k8s中 service 和 ingress 的區(qū)別
9 有狀態(tài)和無狀態(tài)服務(wù)的區(qū)別
10 k8s 中 service 是做什么的?
Linux運(yùn)維工程師面試題(9)
祝各位小伙伴們?cè)缛照业阶约盒膬x的工作。
持續(xù)學(xué)習(xí)才不會(huì)被淘汰。
地球不爆炸,我們不放假。
機(jī)會(huì)總是留給有有準(zhǔn)備的人的。
加油,打工人!
1 pod 的生命周期
第一階段:
Failed:Pod 中有容器啟動(dòng)失敗而導(dǎo)致 pod 工作異常。
Unknown:由于某種原因無法獲得 pod 的當(dāng)前狀態(tài),通常是由于與 pod 所在的 node 節(jié)點(diǎn)通信錯(cuò)誤。
Succeeded:Pod 中的所有容器都被成功終止即 pod 里所有的 containers 均已 terminated。
第二階段:
Unschedulable:Pod不能被調(diào)度,kube-scheduler 沒有匹配到合適的node節(jié)點(diǎn)
CPU資源不夠,內(nèi)存資源不夠
打 labels 標(biāo)簽
PodScheduled:pod 正處于調(diào)度中,在 kube-scheduler 剛開始調(diào)度的時(shí)候,還沒有將 pod 分配到指定node,在篩選出合適的節(jié)點(diǎn)后就會(huì)更新 etcd 數(shù)據(jù),將 pod 分配到指定的 node
Initialized:所有 pod 中的初始化容器已經(jīng)完成了
ImagePullBackOff:Pod 所在的 node 節(jié)點(diǎn)下載鏡像失敗
node 節(jié)點(diǎn)無法下載鏡像
網(wǎng)絡(luò)問題
權(quán)限問題
鏡像地址或者名稱寫錯(cuò)
Running:Pod 內(nèi)部的容器已經(jīng)被創(chuàng)建并且啟動(dòng)
Ready:表示 pod 中的容器已經(jīng)可以提供訪問服務(wù)
2 探針類型
livenessProbe:存活探針,檢測(cè)容器是否正在運(yùn)行,如果存活探測(cè)失敗,則 kubelet 會(huì)殺死容器,并且容器將受到其重啟策略的影響,如果容器不提供存活探針,則默認(rèn)狀態(tài)為 Success,livenessProbe 用戶控制是否重啟 pod。
readinessProbe:就緒探針,如果就緒探測(cè)失敗,端點(diǎn)控制器將從與 Pod 匹配的所有 Service 的端點(diǎn)中刪除該 Pod 的 IP 地址,初始延遲之前的就緒狀態(tài)默認(rèn)為 Failure,如果容器不提供就緒探針,則默認(rèn)狀態(tài)為 Success,readinessProbe 用于控制 pod 是否添加至 service。
livenessProbe 和 readinessProbe 的對(duì)比
配置參數(shù)一樣
livenessProbe:連續(xù)探測(cè)失敗會(huì)重啟、重建 pod,readinessProbe 不會(huì)執(zhí)行重啟或者重建Pod操作
livenessProbe:連續(xù)檢測(cè)指定次數(shù)失敗后會(huì)將容器置于 (Crash Loop BackOff) 切不可用,readinessProbe 不會(huì)
readinessProbe:連續(xù)探測(cè)失敗會(huì)從 service 的 endpointd 中刪除該 Pod,livenessProbe 不具備此功能,但是會(huì)將容器掛起 livenessProbe
livenessProbe 用戶控制是否重啟 pod,readinessProbe 用于控制 pod 是否添加至 service
3 探針方式
ExecAction: 在容器內(nèi)執(zhí)行指定命令。如果命令退出時(shí)返回碼為 0 則認(rèn)為診斷成功。
TCPSocketAction: 對(duì)容器的 IP 地址上的指定端口執(zhí)行 TCP 檢查。如果端口打開,則診斷被認(rèn)為是成功的。
HTTPGetAction: 對(duì)容器的 IP 地址上指定端口和路徑執(zhí)行 HTTP Get 請(qǐng)求。如果響應(yīng)的狀態(tài)碼大于等于 200 且小于 400,則診斷被認(rèn)為是成功的。
4 探針結(jié)果
Success (成功):容器通過了診斷。
Failure (失?。喝萜魑赐ㄟ^診斷。
Unknown (未知):診斷失敗,因此不會(huì)采取任何行動(dòng)。
5 Pod 重啟策略
restartPolicy:
Always:當(dāng)容器異常時(shí),k8s 自動(dòng)重啟該容器,ReplicationController/Replicaset/Deployment。
OnFailure:當(dāng)容器失敗時(shí) (容器停止運(yùn)行且退出碼不為0),k8s 自動(dòng)重啟該容器。
Never:不論容器運(yùn)行狀態(tài)如何都不會(huì)重啟該容器,Job 或 CronJob。
6 鏡像獲取策略
imagePullPolicy:
Always:每次啟動(dòng)Pod時(shí)都要從指定的倉庫下載鏡像。
IfNotPresent:僅本地鏡像缺失時(shí)才從目標(biāo)倉庫下載鏡像。
Never:禁止從倉庫下載鏡像,僅使用本地鏡像。
對(duì)于標(biāo)簽為 latest 的鏡像文件,其默認(rèn)的鏡像獲取策略為Always;
其他標(biāo)簽的鏡像,默認(rèn)策略則為IfNotPresent。
7 k8s 的服務(wù)類型
ClusterIP
:通過集群的內(nèi)部 IP 暴露服務(wù),選擇該值時(shí)服務(wù)只能夠在集群內(nèi)部訪問。 這也是你沒有為服務(wù)顯式指定type
時(shí)使用的默認(rèn)值。 你可以使用 或者 向公眾暴露服務(wù)。:通過每個(gè)節(jié)點(diǎn)上的 IP 和靜態(tài)端口(
NodePort
)暴露服務(wù)。 為了讓節(jié)點(diǎn)端口可用,Kubernetes 設(shè)置了集群 IP 地址,這等同于你請(qǐng)求type: ClusterIP
的服務(wù)。:使用云提供商的負(fù)載均衡器向外部暴露服務(wù)。 外部負(fù)載均衡器可以將流量路由到自動(dòng)創(chuàng)建的
NodePort
服務(wù)和ClusterIP
服務(wù)上。:通過返回
CNAME
記錄和對(duì)應(yīng)值,可以將服務(wù)映射到externalName
字段的內(nèi)容(例如,foo.bar.example.com
)。 無需創(chuàng)建任何類型代理。
8 k8s中 service 和 ingress 的區(qū)別
service 只能通過四層負(fù)載就是ip+端口的形式來暴露
ingress 可以提供7層的負(fù)責(zé)對(duì)外暴露接口,而且可以調(diào)度不同的業(yè)務(wù)域,不同的url訪問路徑的業(yè)務(wù)流量。
9 有狀態(tài)和無狀態(tài)服務(wù)的區(qū)別
http請(qǐng)求無狀態(tài),多次請(qǐng)求之間沒有依賴關(guān)系
有狀態(tài)就是多次訪問之間有關(guān)聯(lián)關(guān)系,需要記錄多次之間的訪問關(guān)系
10 k8s 中 service 是做什么的?
主要是做動(dòng)態(tài)的發(fā)現(xiàn)后端主機(jī)的endpoint并提供負(fù)載均衡的一個(gè)入口。
以上面試題僅僅個(gè)人總結(jié),想到什么就寫什么,沒有任何順序,寫的有什么不對(duì)的地方請(qǐng)各位大佬評(píng)論、留言,我會(huì)及時(shí)更正。
原文鏈接: [Linux運(yùn)維工程師面試題(9)](https://blog.waluna.top/2023/03/26/1368/).