赞
踩
无论 Pod 处于什么异常状态,都可以执行以下命令来查看 Pod 的状态
1、Pod --Pending状态
Pending 说明 Pod 还没有调度到某个 Node 上面。可以通过
kubectl describe pod <pod-name> 命令查看到当前 Pod 的事件,进而判断为什么没有调度。可能的原因包括
2、Pod --Waiting 或 ContainerCreating状态
首先还是通过 kubectl describe pod <pod-name> 命令查看到当前 Pod 的事件。可能的原因包括
3、Pod -- ImagePullBackOff状态
这也是我们测试环境常见的,通常是镜像拉取失败。这种情况可以使用 docker pull <image> 来验证镜像是否可以正常拉取。
或者docker images | grep <images>查看镜像是否存在(系统有时会因为资源问题自动删除一部分镜像),
4、Pod -- CrashLoopBackOff状态
CrashLoopBackOff 状态说明容器曾经启动了,但可能又异常退出了。此时可以先查看一下容器的日志
kubectl logs <pod-name> kubectl logs --previous <pod-name>
这里可以发现一些容器退出的原因,比如
5、Pod --Error 状态
通常处于 Error 状态说明 Pod 启动过程中发生了错误。常见的原因包括
6、Pod --Terminating 或 Unknown 状态
从 v1.5 开始,Kubernetes 不会因为 Node 失联而删除其上正在运行的 Pod,而是将其标记为 Terminating 或 Unknown 状态。想要删除这些状态的 Pod 有三种方法:
7、Pod -- Evicted状态
出现这种情况,多见于系统内存或硬盘资源不足,可df-h查看docker存储所在目录的资源使用情况,如果百分比大于85%,就要及时清理下资源,尤其是一些大文件、docker镜像。
清除状态为Evicted的pod:
kubectl get pods | grep Evicted | awk '{print $1}' | xargs kubectl delete pod
删除所有状态异常的pod:
kubectl delete pods $(kubectl get pods | grep -v Running | cut -d ' ' -f 1)
删除集群中没有在使用的docker镜像(慎用):
docker image prune -f
查看pod对应的服务(镜像)版本:
kubectl --server=127.0.0.1:8888 get rc -o yaml | grep image: |uniq | sort | grep ecs-core
附:
删除某类历史镜像(仅保留当前使用的)
docker images | grep ecs-core | grep -v `docker images | grep ecs-core -m 1 | awk '{print $2}'` | awk '{print $3}' | xargs docker rmi -f
1、flannel插件安装失败:Error registering network: failed to acquire lease
环境:单节点k8s
问题描述
部署flannel网络插件失败:
NAMESPACE NAME READY STATUS RESTARTS AGE kube-flannel kube-flannel-ds-55nbz 0/1 CrashLoopBackOff 3 3m48s
查看日志和事件
查看日志
# kubectl logs -f -n kube-flannel kube-flannel-ds-zcg88 I1015 08:01:17.973247 1 match.go:259] Using interface with name ens33 and address 10.0.0.10 I1015 08:01:17.973300 1 match.go:281] Defaulting external address to interface address (10.0.0.10) I1015 08:01:17.973485 1 vxlan.go:138] VXLAN config: VNI=1 Port=0 GBP=false Learning=false DirectRouting=false E1015 08:01:17.974560 1 main.go:330] Error registering network: failed to acquire lease: node "k8s-node-1" pod cidr not assigned W1015 08:01:17.974846 1 reflector.go:436] github.com/flannel-io/flannel/subnet/kube/kube.go:402: watch of *v1.Node ended with: an error on the server ("unable to decode an event from the watch stream: context canceled") has prevented the request from succeeding I1015 08:01:17.974943 1 main.go:447] Stopping shutdownHandler...
查看事件
# kubectl get events
解决:修改controller配置文件
vim /etc/kubernetes/manifests/kube-controller-manager.yaml 增加参数: --allocate-node-cidrs=true --cluster-cidr=10.244.0.0/16
重启kubelet
systemctl restart kubelet
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。