使用 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”
相关文章
- Kubernetes NameSpace 介绍
- n-Kubernetes入坑解决FAQ记录
- 【Kubernetes系列】Pod
- 阿里大佬力荐K8s项目实战笔记!图文并茂带你深度解析Kubernetes
- 关于Kubernetes中kube-apiserver使用token、kubeconfig认证的一些笔记
- 关于 Kubernetes中Service使用nginx-controller实现Ingress负载均衡器的一个Demo
- kubernetes中为容器设置内核参数
- Kubernetes容量规划 | 如何调整集群的资源占用
- 新的加密货币 Dero 挖矿活动,正以Kubernetes集群为目标进行
- kubernetes集群交付安装spinnaker自动化部署
- 为何 Kubernetes 如此受欢迎?
- 使用 KRAWL 扫描 Kubernetes 错误
- 用树莓派构建 Kubernetes 集群
- Oracle宣布将与Kubernetes合作推出DevOps解决方案
- 如何跨越 Kubernetes 学习曲线