欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

K8s中Pod處于Pending狀態(tài)的八種原因分析

 更新時(shí)間:2025年02月24日 08:49:04   作者:Leo-Yide  
文章詳細(xì)介紹了Pod處于Pending狀態(tài)的八種常見(jiàn)原因,并提供了相應(yīng)的排查和解決方法,這些原因包括資源不足、調(diào)度約束、存儲(chǔ)依賴、鏡像問(wèn)題、配額限制、網(wǎng)絡(luò)暗礁、系統(tǒng)級(jí)異常以及冷門陷阱,每種原因都附帶了具體的診斷方法和解決建議,感興趣的朋友一起看看吧

在生產(chǎn)環(huán)境中遇到Pod卡在Pending狀態(tài),就像外賣小哥找不到配送地址一樣讓人焦慮。作為踩坑無(wú)數(shù)的老司機(jī),今天帶大家拆解這個(gè)經(jīng)典問(wèn)題的排查思路,附贈(zèng)真實(shí)戰(zhàn)場(chǎng)經(jīng)驗(yàn)。(配圖:一個(gè)卡在加載狀態(tài)的Pod圖標(biāo))

一、資源不足:最經(jīng)典的"堵車"場(chǎng)景

典型癥狀:kubectl describe顯示"0/3 nodes are available: 3 Insufficient cpu, 2 Insufficient memory"

深層原因

  • 節(jié)點(diǎn)資源耗盡(真實(shí)案例:某次促銷活動(dòng)忘記擴(kuò)容,節(jié)點(diǎn)CPU利用率達(dá)98%)
  • Pod資源請(qǐng)求過(guò)高(常見(jiàn)于新人配置requests=limits)

排查武器庫(kù)

kubectl top nodes  # 查看節(jié)點(diǎn)資源水位
kubectl describe node <節(jié)點(diǎn)名> | grep -A 10 Allocated  # 查看具體分配情況

生存指南

  • 緊急擴(kuò)容:kubectl scale deploy/<名稱> --replicas=0先止血
  • 合理配置:遵循黃金法則 - requests=limits的80%
  • 自動(dòng)擴(kuò)縮容:安裝cluster-autoscaler實(shí)現(xiàn)節(jié)點(diǎn)自動(dòng)伸縮

二、調(diào)度約束:K8S版的"落花有意流水無(wú)情"

高階踩坑現(xiàn)場(chǎng)

  • nodeSelector選了不存在的標(biāo)簽
  • 親和性設(shè)置過(guò)于嚴(yán)格(反例:必須調(diào)度到SSD+GPU節(jié)點(diǎn))
  • 節(jié)點(diǎn)污點(diǎn)未配置容忍(生產(chǎn)環(huán)境常見(jiàn):專用GPU節(jié)點(diǎn))

診斷秘籍

kubectl get nodes --show-labels | grep <關(guān)鍵標(biāo)簽>
kubectl describe pod | grep -i 'affinity'  # 查看親和性配置

避坑姿勢(shì)

tolerations:  # 污點(diǎn)容忍配置示例
- key: "gpu"
  operator: "Exists"
  effect: "NoSchedule"

三、存儲(chǔ)依賴:等待永久的約會(huì)

經(jīng)典連環(huán)坑

  • PVC找不到匹配的PV(尤其StatefulSet場(chǎng)景)
  • StorageClass配置錯(cuò)誤(測(cè)試環(huán)境用local-path,生產(chǎn)用ceph)
  • 云盤配額不足(AWS EBS類型選錯(cuò))

排查三連擊

kubectl get pvc
kubectl describe storageclass
aws ec2 describe-volumes --region <區(qū)域>  # 云平臺(tái)檢查

實(shí)戰(zhàn)技巧

  • 預(yù)創(chuàng)建PV池應(yīng)對(duì)突發(fā)流量
  • 使用動(dòng)態(tài)供應(yīng)StorageClass
  • 監(jiān)控云平臺(tái)配額:aws service-quotas get-service-quota --service-code ec2 --quota-code L-XXXX

四、鏡像問(wèn)題:你以為的下載不是下載

隱蔽陷阱

  • 私有倉(cāng)庫(kù)認(rèn)證失?。╧ubelet報(bào)x509證書錯(cuò)誤)
  • 鏡像tag不存在(latest標(biāo)簽被覆蓋)
  • 國(guó)內(nèi)拉取gcr.io鏡像超時(shí)

診斷組合拳

kubectl describe pod | grep -i 'image'
docker pull <鏡像地址>  # 在節(jié)點(diǎn)上手動(dòng)測(cè)試
journalctl -u kubelet | grep -i 'image'  # 查看kubelet日志

救命方案

imagePullSecrets:  # 私有倉(cāng)庫(kù)認(rèn)證配置
- name: regcred

五、配額限制:看不見(jiàn)的天花板

多維限制矩陣

  • Namespace資源配額(ResourceQuota)
  • Service配額(AWS的NLB數(shù)量限制)
  • RBAC權(quán)限不足(ServiceAccount無(wú)create權(quán)限)

排查工具箱

kubectl describe quota -n <命名空間>
aws service-quotas list-service-quotas --service-code ec2  # 檢查云配額

破局之道

apiVersion: v1
kind: ResourceQuota
metadata:
  name: team-quota
spec:
  hard:
    requests.cpu: "20"
    requests.memory: 100Gi

六、網(wǎng)絡(luò)暗礁:沉默的殺手

高危場(chǎng)景

  • 網(wǎng)絡(luò)插件異常(Calico的IP池耗盡)
  • 安全組配置錯(cuò)誤(AWS節(jié)點(diǎn)間端口未開放)
  • CNI配置沖突(多網(wǎng)絡(luò)插件混用)

診斷七傷拳

kubectl get pods -n kube-system  # 檢查網(wǎng)絡(luò)組件狀態(tài)
calicoctl ipam show --show-blocks  # Calico IP地址檢查
telnet <節(jié)點(diǎn)IP> 10250  # 檢查節(jié)點(diǎn)間通信

終極防御

  • 定期清理IP池:calicoctl ipam release --ip=<廢棄IP>
  • 使用網(wǎng)絡(luò)策略白名單
  • 啟用NetworkPolicy審計(jì)

七、系統(tǒng)級(jí)異常:底層的暴擊

魔鬼藏在細(xì)節(jié)里

  • kube-scheduler進(jìn)程崩潰
  • 節(jié)點(diǎn)磁盤inode耗盡
  • 內(nèi)核版本不兼容(尤其使用ebpf網(wǎng)絡(luò)插件時(shí))

深度檢測(cè)

systemctl status kube-scheduler  # 調(diào)度器狀態(tài)
df -i  # 檢查inode使用
uname -r  # 核對(duì)內(nèi)核版本

生存法則

  • 部署kube-scheduler的多實(shí)例
  • 啟用節(jié)點(diǎn)自動(dòng)修復(fù)功能
  • 定期內(nèi)核漏洞掃描

八、冷門陷阱:那些年我們踩過(guò)的神坑

奇葩問(wèn)題集錦

  • 時(shí)區(qū)設(shè)置導(dǎo)致cronjob異常
  • 節(jié)點(diǎn)時(shí)間不同步引發(fā)證書驗(yàn)證失敗
  • kube-proxy的conntrack表溢出

診斷冷兵器

chronyc tracking  # 檢查時(shí)間同步
cat /proc/sys/net/netfilter/nf_conntrack_max  # 連接追蹤表大小

防御矩陣

  • 全集群NTP時(shí)間同步
  • 調(diào)整conntrack參數(shù):
sysctl -w net.netfilter.nf_conntrack_max=1048576

終極排查路線圖(思維導(dǎo)圖見(jiàn)文末)

  • 看事件:kubectl describe pod <名稱>
  • 查調(diào)度:kubectl get events --field-selector involvedObject.kind=Pod
  • 核配置:kubectl get pod <名稱> -o yaml
  • 檢資源:kubectl top系列命令
  • 追日志:kubelet和容器運(yùn)行時(shí)日志
  • 測(cè)網(wǎng)絡(luò):節(jié)點(diǎn)間通信測(cè)試
  • 審配額:云平臺(tái)和K8S雙重檢查

武器庫(kù)升級(jí)

  • 可視化工具:Lens、K9s
  • 日志系統(tǒng):ELK+Filebeat
  • 監(jiān)控體系:Prometheus+Alertmanager+Grafana黃金組合

寫給開發(fā)者的生存建議

  • 給每個(gè)Pod配置合理的requests/limits
  • 重要服務(wù)添加PreStopHook實(shí)現(xiàn)優(yōu)雅終止
  • 生產(chǎn)環(huán)境Always指定鏡像tag
  • 使用PDB(PodDisruptionBudget)防止意外驅(qū)逐
  • 定期進(jìn)行混沌工程演練

記住:Pending不是錯(cuò)誤,而是K8S在說(shuō)"我盡力了,但..."。掌握這套排查心法,下次遇到問(wèn)題時(shí)你就能淡定地說(shuō):"讓子彈飛一會(huì)兒,我先看看調(diào)度日志。"

到此這篇關(guān)于K8s中Pod處于Pending狀態(tài)的八種原因的文章就介紹到這了,更多相關(guān)K8s中Pod處于Pending狀態(tài)的八種原因內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 云原生技術(shù)持久化存儲(chǔ)PV與PVC

    云原生技術(shù)持久化存儲(chǔ)PV與PVC

    這篇文章主要介紹了云原生技術(shù)持久化存儲(chǔ)PV與PVC
    2022-03-03
  • K8S部署rocketmq5全過(guò)程

    K8S部署rocketmq5全過(guò)程

    在開發(fā)環(huán)境中部署RocketMQ 5并驗(yàn)證新版本代理特性,遇到一系列問(wèn)題,包括存儲(chǔ)權(quán)限、主從副本配置和命名空間問(wèn)題,通過(guò)修改配置文件和PV設(shè)置,最終解決了這些問(wèn)題,成功部署了RocketMQ集群
    2025-01-01
  • k8s如何給node添加標(biāo)簽(最新推薦)

    k8s如何給node添加標(biāo)簽(最新推薦)

    k8s集群如果由大量節(jié)點(diǎn)組成,可將節(jié)點(diǎn)打上對(duì)應(yīng)的標(biāo)簽,然后通過(guò)標(biāo)簽進(jìn)行篩選及查看,更好的進(jìn)行資源對(duì)象的相關(guān)選擇與匹配,這篇文章主要介紹了k8s如何給node添加標(biāo)簽,需要的朋友可以參考下
    2023-02-02
  • 淺析kubernetes的控制器和標(biāo)簽

    淺析kubernetes的控制器和標(biāo)簽

    這篇文章主要介紹了kubernetes的控制器和標(biāo)簽的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用k8s,感興趣的朋友可以了解下
    2021-04-04
  • K8S部署Kafka界面管理工具(kafkamanager)方法詳解

    K8S部署Kafka界面管理工具(kafkamanager)方法詳解

    這篇文章主要介紹了K8S部署Kafka界面管理工具(kafkamanager)方法詳解,需要的朋友可以參考下
    2022-01-01
  • 常見(jiàn)Kubernetes kubectl命令使用詳解

    常見(jiàn)Kubernetes kubectl命令使用詳解

    這篇文章主要為大家介紹了常見(jiàn)Kubernetes kubectl命令使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 阿里云kubernetes查找鏡像中jar包的方法(docker查看鏡像中的jar)

    阿里云kubernetes查找鏡像中jar包的方法(docker查看鏡像中的jar)

    這篇文章主要給大家介紹了關(guān)于阿里云kubernetes查找鏡像中jar包的方法,也就是在docker查看鏡像中的jar,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • k8s部署rabbitmq集群的方式

    k8s部署rabbitmq集群的方式

    本次部署方式為setafulset的方式部署rabbitmq集群,使用svc的無(wú)頭服務(wù),本次涉及使用到的服務(wù)有setafulset、secret、configmap、service、pv、pvc、sa,在rabbitmq的官網(wǎng)中使用的是operator的方式,感興趣的朋友一起看看吧
    2024-03-03
  • 安裝ingress-nginx遇到的一些坑實(shí)戰(zhàn)記錄

    安裝ingress-nginx遇到的一些坑實(shí)戰(zhàn)記錄

    ingress是kubernetes集群對(duì)外暴露服務(wù)的一種方式,下面這篇文章主要給大家介紹了關(guān)于安裝ingress-nginx遇到的一些坑,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • Kubernetes中創(chuàng)建命名空間實(shí)現(xiàn)方法

    Kubernetes中創(chuàng)建命名空間實(shí)現(xiàn)方法

    這篇文章主要為大家介紹了Kubernetes中創(chuàng)建命名空間實(shí)現(xiàn)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11

最新評(píng)論