- 最新动态
- 功能总览
-
服务公告
- 最新公告
- 产品变更公告
- 集群版本公告
-
漏洞公告
- 漏洞修复策略
- Kubernetes安全漏洞公告(CVE-2024-10220)
- Kubernetes安全漏洞公告(CVE-2024-9486,CVE-2024-9594)
- NVIDIA Container Toolkit容器逃逸漏洞公告(CVE-2024-0132)
- Linux CUPS服务RCE 漏洞公告(CVE-2024-47076、CVE-2024-47175、CVE-2024-47176、CVE-2024-47177)
- NGINX Ingress控制器验证绕过漏洞公告(CVE-2024-7646)
- Docker Engine授权插件AuthZ权限绕过漏洞公告(CVE-2024-41110)
- Linux内核权限提升漏洞公告(CVE-2024-1086)
- OpenSSH远程代码执行漏洞公告(CVE-2024-6387)
- Fluent Bit内存崩溃漏洞公告(CVE-2024-4323)
- runc systemd属性注入漏洞公告(CVE-2024-3154)
- runc漏洞(CVE-2024-21626)对CCE服务的影响说明
- Kubernetes安全漏洞公告(CVE-2022-3172)
- Linux Kernel openvswitch 模块权限提升漏洞预警(CVE-2022-2639)
- nginx-ingress插件安全漏洞预警公告(CVE-2021-25748)
- nginx-ingress插件安全漏洞预警公告(CVE-2021-25745,CVE-2021-25746)
- containerd容器进程权限提升漏洞公告(CVE-2022-24769)
- CRI-O容器运行时引擎任意代码执行漏洞(CVE-2022-0811)
- linux内核导致的容器逃逸漏洞公告(CVE-2022-0492)
- containerd镜像Volume非安全处理漏洞公告(CVE-2022-23648)
- Linux内核整数溢出漏洞(CVE-2022-0185)
- Linux Polkit 权限提升漏洞预警(CVE-2021-4034)
- Kubernetes subpath符号链接交换安全漏洞(CVE-2021- 25741)
- runc符号链接挂载与容器逃逸漏洞预警公告(CVE-2021-30465)
- Docker资源管理错误漏洞公告(CVE-2021-21285)
- NVIDIA GPU驱动漏洞公告(CVE-2021-1056)
- Sudo缓冲区错误漏洞公告(CVE-2021-3156)
- Kubernetes安全漏洞公告(CVE-2020-8554)
- Apache containerd安全漏洞公告(CVE-2020-15257)
- Docker Engine输入验证错误漏洞公告(CVE-2020-13401)
- Kubernetes kube-apiserver输入验证错误漏洞公告(CVE-2020-8559)
- Kubernetes kubelet资源管理错误漏洞公告(CVE-2020-8557)
- Kubernetes kubelet和kube-proxy授权问题漏洞公告(CVE-2020-8558)
- 修复Kubernetes HTTP/2漏洞公告
- 修复Linux内核SACK漏洞公告
- 修复Docker操作系统命令注入漏洞公告(CVE-2019-5736)
- 全面修复Kubernetes权限许可和访问控制漏洞公告(CVE-2018-1002105)
- 修复Kubernetes Dashboard安全漏洞公告(CVE-2018-18264)
-
产品发布记录
-
集群版本发布记录
- Kubernetes版本策略
-
Kubernetes版本发布记录
- Kubernetes 1.31版本说明
- Kubernetes 1.30版本说明
- Kubernetes 1.29版本说明
- Kubernetes 1.28版本说明
- Kubernetes 1.27版本说明
- Kubernetes 1.25版本说明
- Kubernetes 1.23版本说明
- (停止维护)Kubernetes 1.21版本说明
- (停止维护)Kubernetes 1.19版本说明
- (停止维护)Kubernetes 1.17版本说明
- (停止维护)Kubernetes 1.15版本说明
- (停止维护)Kubernetes 1.13版本说明
- (停止维护)Kubernetes 1.11版本说明
- (停止维护)Kubernetes 1.9及之前版本说明
- 补丁版本发布记录
- 操作系统镜像发布记录
-
插件版本发布记录
- CoreDNS域名解析插件版本发布记录
- CCE容器存储插件(Everest)版本发布记录
- CCE节点故障检测插件版本发布记录
- Kubernetes Dashboard插件版本发布记录
- CCE集群弹性引擎版本发布记录
- NGINX Ingress控制器插件版本发布记录
- Kubernetes Metrics Server插件版本发布记录
- CCE容器弹性引擎插件版本发布记录
- CCE突发弹性引擎(对接CCI)插件版本发布记录
- CCE AI套件(NVIDIA GPU)版本发布记录
- CCE AI套件(Ascend NPU)版本发布记录
- Volcano调度器版本发布记录
- CCE密钥管理(对接 DEW)插件版本发布记录
- CCE容器网络扩展指标插件版本发布记录
- 节点本地域名解析加速插件版本发布记录
- 云原生监控插件版本发布记录
- 云原生日志采集插件版本发布记录
- 容器镜像签名验证插件版本发布记录
- Grafana插件版本发布记录
- OpenKruise插件版本发布记录
- Gatekeeper插件版本发布记录
- 容器垂直弹性引擎版本发布记录
- CCE集群备份恢复插件版本发布记录(停止维护)
- Kubernetes Web终端版本发布记录(停止维护)
- Prometheus插件版本发布记录(停止维护)
-
集群版本发布记录
- 产品介绍
- 计费说明
- Kubernetes基础知识
- 快速入门
-
用户指南
- 高危操作一览
-
集群
- 集群概述
-
集群版本发布说明
-
Kubernetes版本发布记录
- Kubernetes 1.31版本说明
- Kubernetes 1.30版本说明
- Kubernetes 1.29版本说明
- Kubernetes 1.28版本说明
- Kubernetes 1.27版本说明
- Kubernetes 1.25版本说明
- Kubernetes 1.23版本说明
- (停止维护)Kubernetes 1.21版本说明
- (停止维护)Kubernetes 1.19版本说明
- (停止维护)Kubernetes 1.17版本说明
- (停止维护)Kubernetes 1.15版本说明
- (停止维护)Kubernetes 1.13版本说明
- (停止维护)Kubernetes 1.11版本说明
- (停止维护)Kubernetes 1.9及之前版本说明
- 补丁版本发布记录
-
Kubernetes版本发布记录
- 购买集群
- 连接集群
- 管理集群
-
升级集群
- 升级集群的流程和方法
- 升级前须知
- 升级后验证
- 集群跨版本业务迁移
-
升级前检查异常问题排查
- 升级前检查项
- 节点限制检查异常处理
- 升级管控检查异常处理
- 插件检查异常处理
- Helm模板检查异常处理
- Master节点SSH连通性检查异常处理
- 节点池检查异常处理
- 安全组检查异常处理
- 残留待迁移节点检查异常处理
- K8s废弃资源检查异常处理
- 兼容性风险检查异常处理
- 节点上CCE Agent版本检查异常处理
- 节点CPU使用率检查异常处理
- CRD检查异常处理
- 节点磁盘检查异常处理
- 节点DNS检查异常处理
- 节点关键目录文件权限检查异常处理
- 节点Kubelet检查异常处理
- 节点内存检查异常处理
- 节点时钟同步服务器检查异常处理
- 节点OS检查异常处理
- 节点CPU数量检查异常处理
- 节点Python命令检查异常处理
- ASM网格版本检查异常处理
- 节点Ready检查异常处理
- 节点journald检查异常处理
- 节点干扰ContainerdSock检查异常处理
- 内部错误异常处理
- 节点挂载点检查异常处理
- K8s节点污点检查异常处理
- everest插件版本限制检查异常处理
- cce-hpa-controller插件限制检查异常处理
- 增强型CPU管理策略检查异常处理
- 用户节点组件健康检查异常处理
- 控制节点组件健康检查异常处理
- K8s组件内存资源限制检查异常处理
- K8s废弃API检查异常处理
- 节点NetworkManager检查异常处理
- 节点ID文件检查异常处理
- 节点配置一致性检查异常处理
- 节点配置文件检查异常处理
- CoreDNS配置一致性检查异常处理
- 节点Sudo检查异常处理
- 节点关键命令检查异常处理
- 节点sock文件挂载检查异常处理
- HTTPS类型负载均衡证书一致性检查异常处理
- 节点挂载检查异常处理
- 节点paas用户登录权限检查异常处理
- ELB IPv4私网地址检查异常处理
- 检查历史升级记录是否满足升级条件
- 检查集群管理平面网段是否与主干配置一致
- GPU插件检查异常处理
- 节点系统参数检查异常处理
- 残留packageversion检查异常处理
- 节点命令行检查异常处理
- 节点交换区检查异常处理
- NGINX Ingress控制器插件升级检查异常处理
- 云原生监控插件升级检查异常处理
- Containerd Pod重启风险检查异常处理
- GPU插件关键参数检查异常处理
- GPU/NPU Pod重建风险检查异常处理
- ELB监听器访问控制配置项检查异常处理
- Master节点规格检查异常处理
- Master节点子网配额检查异常处理
- 节点运行时检查异常处理
- 节点池运行时检查异常处理
- 检查节点镜像数量异常处理
- OpenKruise插件兼容性检查异常处理
- Secret落盘加密特性兼容性检查异常处理
- Ubuntu内核与GPU驱动兼容性提醒
- 排水任务检查异常处理
- 节点镜像层数量异常检查
- 检查集群是否满足滚动升级条件
- 轮转证书文件数量检查
- Ingress与ELB配置一致性检查
- 集群网络组件的NetworkPolicy开关检查
- 集群与节点池配置管理检查
- Master节点时区检查
- 集群管理最佳实践
- 节点
- 节点池
- 工作负载
- 调度
-
网络
- 网络概述
- 容器网络
-
服务(Service)
- 服务概述
- 集群内访问(ClusterIP)
- 节点访问(NodePort)
-
负载均衡(LoadBalancer)
- 创建负载均衡类型的服务
- 使用Annotation配置负载均衡类型的服务
- 为负载均衡类型的Service配置HTTP/HTTPS协议
- 为负载均衡类型的Service配置服务器名称指示(SNI)
- 为负载均衡类型的Service配置跨集群的后端
- 为负载均衡类型的Service配置HTTP/2
- 为负载均衡类型的Service配置HTTP/HTTPS头字段
- 为负载均衡类型的Service配置超时时间
- 为负载均衡类型的Service配置TLS
- 为负载均衡类型的Service配置gzip数据压缩
- 为负载均衡类型的Service配置黑名单/白名单访问策略
- 为负载均衡类型的Service指定多个端口配置健康检查
- 为负载均衡类型的Service配置pass-through能力
- 为负载均衡类型的Service配置获取客户端IP
- 为负载均衡类型的Service配置自定义EIP
- 为负载均衡类型的Service配置区间端口监听
- 通过ELB健康检查设置Pod就绪状态
- 健康检查使用UDP协议的安全组规则说明
- DNAT网关(DNAT)
- Headless Service
-
路由(Ingress)
- 路由概述
- ELB Ingress和Nginx Ingress对比
-
ELB Ingress管理
- 通过控制台创建ELB Ingress
- 通过Kubectl命令行创建ELB Ingress
- 用于配置ELB Ingress的注解(Annotations)
-
ELB Ingress高级配置示例
- 为ELB Ingress配置HTTPS证书
- 更新ELB Ingress的HTTPS证书
- 为ELB Ingress配置服务器名称指示(SNI)
- 为ELB Ingress配置多个转发策略
- 为ELB Ingress配置HTTP/2
- 为ELB Ingress配置HTTPS协议的后端服务
- 为ELB Ingress配置GRPC协议的后端服务
- 为ELB Ingress配置超时时间
- 为ELB Ingress配置慢启动持续时间
- 为ELB Ingress配置灰度发布
- 为ELB Ingress配置黑名单/白名单访问策略
- 为ELB Ingress配置多个监听端口
- 为ELB Ingress配置HTTP/HTTPS头字段
- 为ELB Ingress配置gzip数据压缩
- 为ELB Ingress配置URL重定向
- 为ELB Ingress配置Rewrite重写
- 为ELB Ingress配置HTTP重定向到HTTPS
- 为ELB Ingress配置转发规则优先级
- 为ELB Ingress配置自定义Header转发策略
- 为ELB Ingress配置自定义EIP
- 为ELB Ingress配置跨域访问
- 为ELB Ingress配置高级转发规则
- 为ELB Ingress配置高级转发动作
- ELB Ingress转发策略优先级说明
- 多个Ingress使用同一个ELB对外端口的配置说明
- Nginx Ingress管理
- 自建Nginx Ingress迁移到ELB Ingress
- DNS
- 集群网络配置
- 容器如何访问VPC内部网络
- 从容器访问公网
- 网络管理最佳实践
- 存储
- 弹性伸缩
- 云原生观测
- 云原生成本治理
- 命名空间
- 配置项与密钥
- 插件
- 模板(Helm Chart)
- 权限
- 配置中心
- 存储管理-Flexvolume(已弃用)
-
最佳实践
- CCE最佳实践汇总
- 容器应用部署上云CheckList
- 容器化改造
- 集群备份恢复
- 迁移
- DevOps
- 容灾
- 安全
- 弹性伸缩
- 监控
- 集群
-
网络
- 集群网络地址段规划实践
- 集群网络模型选择及各模型区别
- CCE集群实现访问跨VPC网络通信
- 使用VPC和云专线实现容器与IDC之间的网络通信
- 自建IDC与CCE集群共享域名解析
- 通过负载均衡配置实现会话保持
- 不同场景下容器内获取客户端源IP
- 通过配置容器内核参数增大监听队列长度
- 为负载均衡类型的Service配置pass-through能力
- 从Pod访问集群外部网络
- 通过模板包部署Nginx Ingress Controller
- CoreDNS配置优化实践
- CCE Turbo配置容器网卡动态预热
- 集群通过企业路由器连接对端VPC
- 在VPC网络集群中访问集群外地址时使用Pod IP作为客户端源IP
- 存储
- 容器
- 权限
- 发布
- 批量计算
- API参考
- SDK参考
- 场景代码示例
-
常见问题
- 高频常见问题
- 计费类
- 集群
-
节点
- 节点异常问题排查
- 节点创建
-
节点运行
- 集群可用但节点状态为“不可用”如何解决?
- CCE集群中的节点无法远程登录,如何排查解决?
- 如何重置CCE集群中节点的密码?
- 如何收集CCE集群中节点的日志?
- 如何解决yum update升级操作系统导致的容器网络不可用问题?
- Node节点vdb盘受损,通过重置节点仍无法恢复节点?
- CCE集群节点中安装kubelet的端口主要有哪些?
- 如何配置Pod使用GPU节点的加速能力?
- 容器使用SCSI类型云硬盘偶现IO卡住如何解决?
- docker审计日志量过大影响磁盘IO如何解决?
- thinpool磁盘空间耗尽导致容器或节点异常时,如何解决?
- CCE节点上监听的端口列表
- GPU节点使用nvidia驱动启动容器排查思路
- CCE节点NTP时间不同步如何解决?
- Containerd节点业务容器标准输出日志写入过快导致节点数据盘使用率过高
- 为什么kubectl top命令查看节点内存使用超过100%?
- CCE节点事件中一直出现“镜像回收失败”告警如何解决?
- 规格配置变更
- 操作系统问题说明
- 节点池
- 工作负载
-
网络管理
-
网络异常问题排查
- 工作负载网络异常时,如何定位排查?
- 负载均衡类型Service异常问题排查
- 集群内部无法使用ELB地址访问负载
- 集群外部访问Ingress异常
- CCE集群中域名解析失败
- 为什么访问部署的应用时浏览器返回404错误码?
- 为什么容器无法连接互联网?
- VPC的子网无法删除,怎么办?
- 如何修复出现故障的容器网卡?
- 节点无法连接互联网(公网),如何排查定位?
- 如何解决VPC网段与容器网络冲突的问题?
- ELB四层健康检查导致java报错:Connection reset by peer
- Service事件:Have no node to bind,如何排查?
- 为什么登录虚拟机VNC界面会间歇性出现Dead loop on virtual device gw_11cbf51a, fix it urgently?
- 集群节点使用networkpolicy概率性出现panic问题
- 节点远程登录界面(VNC)打印较多source ip_type日志问题
- 使用IE浏览器访问nginx-ingress出现重定向308无法访问
- NGINX Ingress控制器插件升级导致集群内Nginx类型的Ingress路由访问异常
- 负载均衡型Service更新出现错误:Quota exceeded for resources: members_per_pool
- ELB Ingress出现告警:Invalid input for rules
- 为ELB Ingress配置了HTTPS证书后访问异常的原因有哪些?
- 网络规划
- 安全加固
- 网络指导
-
网络异常问题排查
-
存储管理
- 如何扩容容器的存储空间?
- CCE支持的存储在持久化和多节点挂载方面的有什么区别?
- 创建CCE节点时可以不添加数据盘吗?
- CCE集群中的EVS存储卷被删除或者过期后是否可以恢复?
- 公网访问CCE部署的服务并上传OBS,为何报错找不到host?
- Pod接口ExtendPathMode: PodUID如何与社区client-go兼容?
- 创建存储卷失败如何解决?
- CCE容器云存储PVC能否感知底层存储故障?
- 通用文件存储(SFS 3.0)在OS中的挂载点修改属组及权限报错
- 无法使用kubectl命令删除PV或PVC
- 删除挂载了云存储的Pod时提示target is busy
- 无法自动创建包周期的云硬盘存储卷
- 误卸载存储池的磁盘后如何恢复
- 删除动态创建的PVC之后,底层存储依旧残留
- 命名空间
-
模板插件
- 插件异常问题排查
- 集群安装nginx-ingress插件失败,一直处于创建中?
- NPD插件版本过低导致进程资源残留问题
- 模板格式不正确,无法删除模板实例?
- CCE是否支持nginx-ingress?
- 插件安装失败,提示The release name is already exist如何解决?
- 创建或升级实例失败,提示rendered manifests contain a resource that already exists
- kube-prometheus-stack插件实例调度失败如何解决?
- 上传模板失败如何解决?
- 如何根据集群规格调整插件配额?
- NGINX Ingress控制器插件处于Unknown状态时卸载残留
- NGINX Ingress控制器插件升级后无法使用TLS v1.0和v1.1
- API&kubectl
- 域名DNS
- 镜像仓库
- 权限
- 相关服务
- 配置参考
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
节点异常问题排查
通过NPD插件排查
CCE提供节点故障检测NPD插件,NPD插件从1.16.0版本开始增加了大量检查项,能对节点上各种资源和组件的状态检测,帮助发现节点故障。
强烈建议您安装该插件,如已安装请查看插件版本并升级到1.16.0及以上版本。
安装NPD插件后,当节点出现异常时,控制台上可以查看到指标异常。
您还可以在节点事件中查看到NPD上报的事件,根据事件信息可以定位故障。
故障事件 |
说明 |
---|---|
OOMKilling |
检查oom事件发生并上报。 处理建议:排查项一:节点负载过高。 |
TaskHung |
检查taskHung事件发生并上报 |
KernelOops |
检查内核0指针panic错误 |
ConntrackFull |
检查连接跟踪表是否满 |
FrequentKubeletRestart |
检测kubelet频繁重启 |
FrequentDockerRestart |
检测docker频繁重启 |
FrequentContainerdRestart |
检测containerd频繁重启 |
CRIProblem |
检查容器CRI组件状态 |
KUBELETProblem |
检查Kubelet状态 |
NTPProblem |
检查ntp服务状态 |
PIDProblem |
检查PID是否充足 |
FDProblem |
检查文件句柄数是否充足 |
MemoryProblem |
检查节点整体内存是否充足 |
CNIProblem |
检查容器CNI组件状态 |
KUBEPROXYProblem |
检查Kube-proxy状态 |
ReadonlyFilesystem |
检查系统内核是否有Remount root filesystem read-only错误。 可能原因:用户在ECS侧误操作卸载数据盘、节点vdb盘被删除。 处理建议: |
DiskReadonly |
检查系统盘、docker盘、kubelet盘是否只读 可能原因:用户在ECS侧误操作卸载数据盘、节点vdb盘被删除。 处理建议: |
DiskProblem |
检查磁盘使用量与关键逻辑磁盘挂载 检查系统盘、docker盘、kubelet盘磁盘使用率,检查docker盘、kubelet盘是否正常挂载在虚拟机上。 |
PIDPressure |
检查PID是否充足。 处理建议:PID不足时可调整PID上限,请参见修改节点进程 ID数量上限kernel.pid_max。 |
MemoryPressure |
检查容器可分配空间(allocable)内存是否充足 |
DiskPressure |
检查kubelet盘和docker盘的磁盘使用量及inodes使用量。 处理建议:扩容数据盘,请参见节点磁盘扩容。 |
自主排查流程

- 登录CCE控制台。
- 单击集群名称进入集群,在左侧选择“节点管理”,切换至“节点”页签。
- 单击节点操作栏中的“更多 > 查看YAML”,查看节点的Status字段。
- 查看节点的状态信息,是否存在PIDPressure、DiskPressure、MemoryPressure等节点状态是否为True。如果节点存在任一状态为True,则基于异常的关键词,查找相应的解决方案。
- 检查节点上的关键组件,及关键组件上的日志。节点上的关键组件为Kubelet及其运行时组件(Docker/Containerd),详细操作请参见检查节点的关键组件。
- Kubelet组件
检查Kubelet的状态、日志等是否存在异常。若存在异常则参考Kubelet异常处理。
- 运行时组件(Docker/Conatinerd)
- 检查节点的运行时组件,若不确定节点的运行时组件具体是Docker还是Containerd,请登录CCE控制台,查看节点的运行时信息。
- 如果存在异常,则参考节点运行时异常处理-RuntimeOffline。
- NTP组件
- 检查NTP服务的状态、日志、配置等是否存在异常。
- 若NTP服务存在异常,则参考NTP异常处理-NTPProblem。
- Kubelet组件
- 检查节点的监控,查看节点的CPU、内存、网络等资源负载情况是否存在异常。如果节点负载情况存在异常,请参考节点MemoryPressure等进行解决。
节点状态为Unknown状态
- 登录ECS界面,查看节点是否存在。
- 需确认节点是否处于运行中状态。
- 检查节点上的关键组件,及关键组件上的日志。节点上的关键组件为Kubelet及其运行时组件(Docker/Containerd),详细操作请参见检查节点的关键组件。
- Kubelet组件
- 检查Kubelet的状态、日志等是否存在异常。若存在异常则参考Kubelet异常处理。
- Kubelet组件
- 检查节点的网络连通性。
常见问题排查方法
检查节点的状态
- 登录CCE服务控制台。
- 在界面中选择需要检查节点所在的集群。
- 在集群列表页面单击“节点管理”,切换到“节点”一栏,查看不可用节点的状态。(如果已安装NPD 1.6.10及以上的插件版本,则在不可用下面会展示指标异常提示,将鼠标光标移动至上方即可看到具体的问题项,若未安装请参考排查项继续排查)。
检查节点事件
- 登录CCE服务控制台。
- 在界面中选择需要检查节点所在的集群。
- 在集群列表页面单击“节点管理”,切换到“节点”一栏,在异常节点所在行单击“事件”。即可查看是否有节点异常的事件上报(需安装NPD插件)。
弹性云服务器是否删除或故障
- 登录CCE服务控制台,进入集群,查看不可用节点的名称。
- 进入ECS控制台,搜索该节点,查看对应的云服务器状态。
- 若弹性云服务器状态为“已删除”:请在CCE中删除对应节点,再重新创建节点。
- 若弹性云服务器状态为“关机”或“冻结”:请先恢复弹性云服务器,约3分钟后集群节点可自行恢复。
- 若弹性云服务器出现故障:请先重启弹性云服务器,恢复故障。
- 若弹性云服务器状态为“可用”:请参考检查节点的关键组件进行排查。
节点的安全组检查
- 节点的安全组被修改导致异常
- 登录VPC控制台,在左侧栏目树中单击“访问控制 > 安全组”,找到集群控制节点的安全组。
- 控制节点安全组名称为:集群名称-cce-control-编号。您可以通过集群名称查找安全组,再进一步在名称中区分“-cce-control-”字样,即为本集群安全组。
- 排查安全组中规则是否被修改,关于安全组的详细说明请参见集群安全组规则配置。
- 检查安全组规则中是否包含Master和Node互通的安全组策略
节点的DNS地址配置错误
- 登录节点,在日志/var/log/cloud-init-output.log中查看是否有域名解析失败相关的报错。可以执行如下指令:
cat /var/log/cloud-init-output.log | grep resolv
如果回显结果包含如下类似内容则说明无法解析该域名。
Could not resolve host: xxx ; Unknown error
- 在节点上ping无法解析的域名,例如:
ping xxx
如果不能,则说明DNS无法解析该地址。请确认/etc/resolv.conf文件中的DNS地址与配置在VPC的子网上的DNS地址是否一致,通常是因为DNS地址配置错误导致无法正常解析域名。
排查是否为包周期节点退订
- 如果该节点是否为包周期节点。
- 节点退订后,订单处理需要一定时间。在此期间节点将处于不可用状态,预计5~10分钟后自动清理该节点,无需做额外处理。
常见问题解决方案
节点PIDPressure
问题根因
节点上的容器占用PID过多导致节点的PID不足。CCE默认留给分配Pod使用的可用PID数的百分比为10%。
问题现象
当节点的可用PID低于pid.available配置项时,则节点状态中PIDPressure为True,同时该节点上的容器被驱逐。关于节点驱逐,可参考社区文档节点压力驱逐。
解决方案
- 执行如下命令,查看节点的最大PID数和节点当前的最大PID。
sysctl kernel.pid_max #查看最大PID数 ps -eLf|awk '{print $2}' | sort -rn| head -n 1 #查看当前的最大PID
- 执行如下命令,查看占用PID最多的前5个进程。
ps -elT | awk '{print $4}' | sort | uniq -c | sort -k1 -g | tail -5
预期输出结果:
17 1211619 18 3739112 18 5299 24 964 25 3739756
第一列为进程占用的PID数,第二列为当前进程号,根据进程号找到对应进程和所属Pod,分析占用PID过多的原因并优化对应的代码。
- 降低节点的负载。
- 如需重启节点,可在ECS界面尝试重启异常节点。(注意:重启节点可能会导致您的业务中断,请谨慎操作。)
节点MemoryPressure
问题根因
节点上的容器占用内存过多导致节点的内存不足。CCE默认节点可用内存值为100 Mi。
问题现象
- 当节点的可用内存低于memory.available配置项时,则节点状态中MemoryPressure为True,同时该节点上的容器被驱逐。关于节点驱逐,可参考社区文档节点压力驱逐。
- 当节点内存不足时,会有以下常见错误信息:
- 节点状态中MemoryPressure为True。
- 当节点上的容器被驱逐时:
- 在被驱逐的容器事件中可看到关键字The node was low on resource: memory。
- 在节点时间中可看到关键字attempting to reclaim memory。
- 可能会导致系统OOM异常,当出现系统OOM异常时,节点时间中可看到关键字Syetem OOM。
解决方案
- 通过节点的监控查看内存增长曲线,确认异常出现时间点,检查节点上的进程是否存在内存泄露现象。具体操作请参见检查节点监控。
- 降低节点上的负载。
- 如需重启节点,可在ECS界面尝试重启异常节点。(注意:重启节点可能会导致您的业务中断,请谨慎操作。)
节点DiskPressure
问题根因
参数名称 |
中文名称 |
默认值 |
---|---|---|
nodefs.available |
Kubelet 使用的文件系统的可用容量的百分比 |
10% |
nodefs.inodesFree |
Kubelet 使用的文件系统的可用inodes数的百分比 |
5% |
imagefs.available |
容器运行时存放镜像等资源的文件系统的可用容量的百分比 |
10% |
imagefs.inodesFree |
容器运行时存放镜像等资源的文件系统的可用inodes数的百分比 |
5% |
问题现象
- 当节点的可用磁盘空间低于imagefs.available配置项时,则节点状态中DiskPressure为True。
- 当可用磁盘空间低于nodefs.available配置项时,则该节点上的容器全部被驱逐。关于节点驱逐,可参考社区文档节点压力驱逐。
- 当磁盘空间不足时,通常会有以下常见错误信息:
- 节点状态中DiskPressure为True。
- 当触发镜像回收策略后,磁盘空间仍然不足以达到健康阈值(默认为80%),在节点事件中可看到关键字failed to garbage collect required amount of images。
- 当节点上的容器被驱逐时:
- 被驱逐的容器事件中可看到关键字The node was low on resource: [DiskPressure]。
- 节点事件中可看到关键字attempting to reclaim ephemeral-storage或attempting to reclaim nodefs。
解决方案
Kubelet异常处理
问题根因
通常是kubelet进程异常、kubelet配置有误导致。通常情况下,CCE已默认为kubelet配置了健康检查,因此配置有误导致起不来的可能性更大。
问题现象
Kubelet状态为inactive。
解决方案
- 登录出现异常的节点,执行如下命令重启Kubelet。重启Kubelet不会影响运行中的容器。
systemctl restart kubelet
- 输入以下指令查看Kubelet状态是否恢复正常。
systemctl status kubelet
- 若kubelet重启后状态仍异常,请登录节点执行以下命令查看kubelet的日志。
journalctl -u kubelet
- 若日志中有明确的错误信息,请根据发生错误时的关键字进行排查。
- 若确认是kubelet配置异常,请在节点所属的节点池,单击“配置管理”,在kubelet组件配置栏,对kubelet配置进行修改。
节点运行时异常处理-RuntimeOffline
问题根因
通常Docker/Containerd的配置、进程异常等原因导致。
问题现象
- Docker组件
- Docker的状态为inactive。
- Docker的状态为active(running),但是节点未正常工作,导致节点异常。此时通过docker ps 或者 docker exec等命令出现执行失败的现象。
- 节点状态中的RuntimeOffline为True。
- Containerd组件
- Containerd的状态为inactive。
- 节点状态中的RuntimeOffline为True。
解决方案
- 登录异常的节点。
- 执行如下命令重启运行时。
# Docker systemctl restart docker # Containerd systemctl restart containerd
- 待命令执行完毕之后,查看运行时状态是否正常。
# Docker systemctl status docker # Containerd systemctl status containerd
- 若重启运行时,组件的状态仍然异常,请执行如下命令查看组件日志。
# Docker journalctl -u docker # containerd journalctl -u containerd
NTP异常处理-NTPProblem
问题根因
NTP进程状态异常导致。
问题现象
- Chronyd状态为inactive。
- 节点状态中NTPProblem为True。
解决方案
- 登录异常节点,执行如下命令重启Chronyd。
systemctl restart chronyd
- Chronyd重启之后,执行以下命令,查看Chronyd的状态是否恢复正常。
systemctl status chronyd
- 若Chronyd重启之后状态仍然异常,请登录节点执行以下命令查看Chronyd日志。
journalctl -u chronyd
节点异常重启
问题根因
通常是节点负载异常等原因导致。
问题现象
节点重启的过程中,节点状态为NotReady。
解决方案
- 执行如下命令,查看节点重启时间。
last reboot
预期输出:
- 查看节点的监控,根据节点重启时间排查出现异常的资源。具体操作请参见检查节点监控。
- 查看节点的内核日志,根据重启时间排查异常日志。
节点网络异常
问题根因
通常是节点运行状态异常、安全组配置有误或网络负载过高导致。
问题现象
- 节点无法登录。
- 节点状态Unknown。
解决方案
- 若节点无法登录,请参考以下步骤排查:
- 在ECS侧检查节点实例状态是否为运行中。
- 参考是否为ECS的cloud-init执行失败导致。具体操作,可参考弹性云服务是否能够登录。
- 检查节点的安全组配置。具体操作,可参考节点的安全组检查。
- 若节点的网络负载过高,请参考以下步骤进行排查:
- 通过节点的监控查节点网络增长曲线,检查节点上的Pod是否存在占用网络带宽过多的现象。
- 使用网络策略控制Pod的网络流量。具体操作,请参考配置网络策略限制Pod访问的对象。
节点PLEG异常-PLEG is not healthy
问题根因
Pod生命周期事件生成器PLEG(Pod Lifecycle Event Generator)会记录Pod生命周期中的各种事件,如容器的启动、终止等。PLEG is not healthy异常通常是由于节点上的运行时进程异常或者节点Systemd版本缺陷导致。
问题现象
- 节点状态NotReady
- 在Kubelet日志中,可看到如下日志。
skipping pod synchronization - PLEG is not healthy: pleg was last seen active 3m17.028393648s ago; threshold is 3m0s.
解决方案
- 依次重启节点关键组件Docker、Containerd、Kubelet,待完成重启之后查看节点是否恢复正常。
- 若节点关键组件重启后节点仍未恢复正常,可尝试重启异常节点。(重启节点可能会导致您的业务中断,请谨慎操作)
节点负载过高
问题根因
节点调度资源不足导致。
问题现象
- 集群CPU资源不足:0/2 nodes are available: 2 Insufficient cpu
- 集群内存资源不足:0/2 nodes are available: 2 Insufficient memory
- 集群临时存储不足:0/2 nodes are available: 2 Insufficient ephemeral-storage
其中调度器判定节点资源不足的计算方式为:
- 集群节点CPU资源不足的判定方式:当前Pod请求的CPU资源总量>(节点可分配的CPU资源总量-节点已分配的CPU资源总量)
- 集群节点内存资源不足的判定方式:当前Pod请求的内存资源总量>(节点可分配的内存资源总量-节点已分配的内存资源总量)
- 集群节点临时存储不足的判定方式:当前Pod请求的临时存储总量>(节点可分配的临时存储总量-节点已分配的临时存储总量)
如果当前Pod请求的资源总量大于节点可分配的资源总量减去节点已分配的资源总量,Pod就不会调度到当前节点。
执行以下命令,查看节点的资源分配信息:
kubectl describe node $nodeName
关注输出中,关于资源分配的部分:
Allocatable: cpu: 1930m ephemeral-storage: 94576560382 hugepages-1Gi: 0 hugepages-2Mi: 0 localssd: 0 localvolume: 0 memory: 2511096Ki pods: 20 Allocated resources: (Total limits may be over 100 percent, i.e., overcommitted.) Resource Requests Limits -------- -------- ------ cpu 1255m (65%) 4600m (238%) memory 1945Mi (79%) 3876Mi (158%) ephemeral-storage 0 (0%) 0 (0%) hugepages-1Gi 0 (0%) 0 (0%) hugepages-2Mi 0 (0%) 0 (0%) localssd 0 0 localvolume 0 0
其中:
- Allocatable:表示本节点可分配的(CPU/内存/临时存储)资源总量。
- Allocated resources:表示本节点已经分配的(CPU/内存/临时存储)资源总量。
解决方案
- 删除或减少不必要的Pod,降低节点的负载。
- 根据自身业务情况,限制Pod的资源配置。
- 在集群中添加新的节点。
节点受限调度-存在node.kubernetes.io/route-unreachable污点
问题根因
VPC路由网络模式集群依赖网络基础设施的路由表打通容器网络,新创建的CCE节点支持网络隔离,网络未生效系统会自动添加node.kubernetes.io/route-unreachable污点,并在网络就绪后移除该污点。若遇到节点node.kubernetes.io/route-unreachable污点长时间未移除,说明节点存在网络连通性问题。
问题现象
新建节点长时间处于“受限调度”状态。
解决方案
- 若集群内存在其他正常节点,可通过ping命令检查跨节点容器之间的网络连通性。
创建一个测试容器,示例如下,其中{node_ip}为该异常节点的IP。
kind: Pod apiVersion: v1 metadata: name: nginx namespace: default spec: containers: - name: container-1 image: nginx:latest imagePullPolicy: IfNotPresent imagePullSecrets: - name: default-secret affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - {node_ip} schedulerName: default-scheduler tolerations: - key: node.kubernetes.io/route-unreachabe operator: Exists effect: NoSchedule
待容器启动后,登录另一正常节点,ping此容器的IP。若通信异常,进行下面第二步。
- 到VPC路由表界面查看该节点路由是否已经添加成功,其中下一跳类型为“云容器引擎”,下一跳为该节点名称。如果路由表中存在该节点的路由仍无法连通网络,则可能是底层网络故障,请提网络工单处理。
- 若通过上述检查都无法解决问题,请提交CCE工单进行排查。