使用describe命令进行Kubernetes pod错误排查
我有一个pod名叫another,用kubectl create创建后发现过了29分钟,状态还是处于ContainerCreating阶段。
使用kubectl describe命令检查:
从错误消息发现是因为这个pod attach volume失败:
FailedAttachVolume 2m1s (x22 over 31m) attachdetach-controller AttachVolume.Attach failed for volume "pvc-c4d41f5c-e7ed-11e8-8726-fe6d42bf075f" : googleapi: Error 400: RESOURCE_IN_USE_BY_ANOTHER_RESOURCE - The disk resource 'projects/sap-pi-coo-acdc-dev/zones/europe-west1-b/disks/shoot--k8s-train--shac-pvc-c4d41f5c-e7ed-11e8-8726-fe6d42bf075f' is already being used by 'projects/sap-pi-coo-acdc-dev/zones/europe-west1-b/instances/shoot--k8s-train--shacw46-worker-prvfv-z1-7844dc6744-ghd5m'
Warning FailedMount 31s (x14 over 29m) kubelet, shoot--k8s-train--shacw46-worker-prvfv-z1-7844dc6744-hhrmd Unable to mount volumes for pod "another_part-0110(13f15fa4-e819-11e8-8726-fe6d42bf075f)": timeout expired waiting for volumes to attach or mount for pod "part-0110"/"another". list of unmounted volumes=[content-storage]. list of unattached volumes=[content-storage default-token-6z5sk]
查看这个pod的yaml文件,果然发现有一个persistent volume的claim:
用命令kubectl get pv, 发现当前所有的persistent volume都被占用了(BOUND状态):
解决方案有很多种,处于测试目的,我只是简单地将另一个同样声明了nginx-pvc作为PersistentVolumeClaim的pod删除,然后这个名为another的pod状态就很快变成Running了:
从describe命令生成的日志里也能清楚的观察到这个成功mount volume的事件:
Normal SuccessfulAttachVolume 84s attachdetach-controller AttachVolume.Attach succeeded for volume "pvc-c4d41f5c-e7ed-11e8-8726-fe6d42bf075f"
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
在容器内部看到ppid为0代表什么
在docker容器内部,我们常常看到一些进程它的ppid(父进程id)为0.因为docker 集成了pid namspace;所以 pid namespace里ppid=0的情况和docker内部一致。 当pid namespace内进程的父进程不在此pid namespace里时,那么ppid显示为0 。这里有两种情况: 1、父进程为容器外部的进程,例如docker的主进程。 2、通过setns进入到namespace内部的进程。也就是docker exec注入到容器内部的进程
- 下一篇
通过describe命令学习Kubernetes的pod属性详解
我们可以首先使用kubectl get pods命令得到pod列表,比如我们想研究pod nginx-storage-pod的明细: 使用命令kubectl describe pod nginx-storage-pod > nginx-storage-pod.yaml, 将describe命令的输出重定向到一个yaml文件里。用vi打开这个yaml文件: pod的所有属性可以从这个yaml文件里学习: node:shoot--k8s-train--shacw46-worker-prvfv-z1-7844dc6744-ghd5m/10.250.0.6 表明pod所在的node,这个node一定是命令kubectl get node返回的结果之一: Image:代表该pod是基于哪一个docker image创建的。 Mount:该pod使
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果