偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

K8S故障處理指南:pod驅(qū)逐問題處理

運維
在K8S集群故障處理過程中,你可能遇到過pod的各種狀態(tài),Evicted狀態(tài)代表你的K8S環(huán)境遇到了資源驅(qū)逐的問題,本節(jié)通過對驅(qū)逐問題的解決,參數(shù)的調(diào)整,問題的處理思路,希望給你解決此類問題提供幫助。

在K8S集群故障處理過程中,你可能遇到過pod的各種狀態(tài),Evicted狀態(tài)代表你的K8S環(huán)境遇到了資源驅(qū)逐的問題,本節(jié)通過對驅(qū)逐問題的解決,參數(shù)的調(diào)整,問題的處理思路,希望給你解決此類問題提供幫助。

pod驅(qū)逐問題

pod出現(xiàn)狀態(tài)為Evicted時,表示出現(xiàn)了驅(qū)逐。pod驅(qū)逐出現(xiàn)的原因一般為資源不足,內(nèi)存或磁盤空間不足,kubect describe node 根據(jù)集群事件或者系統(tǒng)日志來判斷處于哪種驅(qū)逐場景。

圖片

  • 內(nèi)存驅(qū)逐

圖片

關(guān)鍵字:MemPressure

操作系統(tǒng)日志,kubelet廠商驅(qū)逐pod來回收內(nèi)存

圖片

  • 磁盤驅(qū)逐

根據(jù)pod日志查看也可以。

圖片

關(guān)鍵字:DiskPressure

當(dāng)出現(xiàn)磁盤驅(qū)逐的時候,K8S的機制會在磁盤資源不足時刪除未使用的容器鏡像來釋放空間。

處理思路

總體策略:根據(jù)分析的原因?qū)?yīng)處理即可,找到驅(qū)逐pod所在的node節(jié)點,分析內(nèi)存,cpu或者磁盤空間,分別采取不同措施。

首先是釋放資源,讓pod不再出現(xiàn)驅(qū)逐事件,保證業(yè)務(wù)使用不受影響。

內(nèi)存場景說明

  1. 如果是內(nèi)存出現(xiàn)驅(qū)逐,應(yīng)用是多副本的情況下,可以擇時重啟導(dǎo)致內(nèi)存占用高的服務(wù)釋放資源
  2. 若沒有發(fā)現(xiàn)占用內(nèi)存高的資源,查看buff/cache占用是否過多不釋放,可以臨時或者加定時任務(wù)釋放
echo 1 > /proc/sys/vm/drop_caches
或者 sysctl -w vm.drop_caches=1
echo 2 > /proc/sys/vm/drop_caches
或者 sysctl -w vm.drop_caches=2
echo 3 > /proc/sys/vm/drop_caches
或者sysctl -w vm.drop_caches=3

3.如果是正常業(yè)務(wù)占用,則后續(xù)及時擴容內(nèi)存即可。

4.如果是其他場景,檢查操作系統(tǒng)是否為XC系統(tǒng),需要找廠商進行分析。

  • 清理驅(qū)逐pod

清理驅(qū)逐的pod,避免反復(fù)重啟積累過多。

kubectl get pod -o wide | grep  'Evicted' | awk '{print $2}' | xargs kubectl delete pod
  • 關(guān)于驅(qū)逐的監(jiān)控項

在K8S集群中,為了及時監(jiān)控到驅(qū)逐問題,我們可以通過添加Prometheus監(jiān)控來提前檢測。

# 監(jiān)控內(nèi)存驅(qū)逐
kube_node_status_condition{cnotallow="MemoryPressure",status="true"} ==1
#監(jiān)控磁盤驅(qū)逐
kube_node_status_condition{cnotallow="DiskPressure",status="true"} == 1

驅(qū)逐參數(shù)配置

解決了問題,我們來研究下驅(qū)逐的策略是怎樣的。

節(jié)點壓力驅(qū)逐是 kubelet 主動終止 Pod 以回收節(jié)點上資源的過程。

kubelet 監(jiān)控集群節(jié)點的內(nèi)存、磁盤空間和文件系統(tǒng)的 inode 等資源。當(dāng)這些資源中的一個或者多個達到特定的消耗水平, kubelet 可以主動地使節(jié)點上一個或者多個 Pod 失效,以回收資源。

驅(qū)逐的默認配置:

memory.available<100Mi
nodefs.available<10%
imagefs.available<15%
nodefs.inodesFree<5%(Linux 節(jié)點)

例如,如果一個節(jié)點的總內(nèi)存為 10GiB,并且你希望在可用內(nèi)存低于 1GiB 時觸發(fā)驅(qū)逐則可以將驅(qū)逐條件定義為 memory.available<10% 或 memory.available< 1G(你不能同時使用二者)。

有些情況下,當(dāng)你的內(nèi)存或者磁盤足夠多時,采用百分比可能會導(dǎo)致在資源充足的情況下,產(chǎn)生驅(qū)逐問題,因此我們可以將默認驅(qū)逐修改為當(dāng)剩余資源低于某個閾值時產(chǎn)生驅(qū)逐問題。

cat /data/kube/kubelet/kubelet-config.yaml  | grep -A 4 evictionHard
evictionHard:
  imagefs.available: "1Gi"
  memory.available: "200Mi"
  nodefs.available: "1Gi"
  nodefs.inodesFree: "5%"

重啟讓配置生效。

sudo systemctl daemon-reload && sudo systemctl restart kubelet

重啟完成后檢查pod是否正常,業(yè)務(wù)閑時操作。

官方網(wǎng)站: https://kubernetes.io/zh-cn/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals

責(zé)任編輯:龐桂玉 來源: 運維之美
相關(guān)推薦

2024-02-20 16:55:14

K8S云計算

2024-04-29 13:04:00

K8Spod驅(qū)逐

2024-01-07 19:43:50

K8S節(jié)點

2023-07-04 07:30:03

容器Pod組件

2023-12-01 15:58:00

Kubernetes集群DevOps

2021-07-28 10:10:57

K8SMount PVCPod

2024-03-28 18:08:44

Kubernetes抓包Pod

2022-11-02 10:21:41

K8s pod運維

2021-08-20 11:35:04

服務(wù)運維 故障

2021-04-23 08:35:16

k8s故障檢測

2022-06-01 09:38:36

KubernetesPod容器

2022-04-22 13:32:01

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

2022-09-05 14:45:56

前端K8S

2010-09-25 15:19:04

DHCP故障問題

2023-04-30 00:02:40

K8Skubelet數(shù)據(jù)

2017-05-15 09:27:30

打印掃描故障

2025-08-14 01:11:00

K8sGPT工具

2023-11-06 07:16:22

WasmK8s模塊

2021-07-14 18:21:38

負載均衡K8SgRPC

2023-02-09 16:47:34

KubernetesPod優(yōu)先級
點贊
收藏

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