一:pod非running状态
先kubectl describe pod xxx
如果说pod是时好时坏,可以logs 查看
也可以kubectl exec -it xxx bash
什么情况下pod会处于pending状态?(pending状态pod是未分配,只有分配后才会拉取镜像)
情况:资源不足;污点;没有节点标签;没有匹配到标签。
集群部署类问题:
1 网络不通
检测方法telnet,ping
2 启动失败 (一般是配置文件或者依赖服务)
比如apiserver依赖etcd,etcd起不来,apiserver也起不来
3 平台不兼容
uname -a 查看,一般是x86_64,下载二进制包是amd64
网络类问题,一般指无法在集群内部或者外部无法访问应用。
service一般由kube-proxy组件实现。
检查步骤:
1 pod 是不是正常工作的?
有可能一会running,一会挂了,不断重启
2 service是否关联pod? service指定的target-port端口是否正确?
kubectl get ep
看对应的IP和端口和是不是pod 的IP和端口
get ep查看的是service对应pod的ip和端口,Kubernetes在创建Service时,根据Service的标签选择器(Label Selector)来查找Pod,据此创建与Service同名的EndPoints对象。
3 如果用名称访问,DNS是否正常工作?
kubectl get svc
pod—>coredns—>宿主机的dns
使用kubectl get pod -n kube-system
4 kube-proxy正常工作吗?因为名称访问service都是走的coredns ?是否正常写iptables规则? 检查coredns是不是正常的
比如kubectl get svc,然后使用 iptables-save | grep nginx (对应的svc的名称)
如果没有对应的iptables的规则,那么kube-proxy无法实现svc和pod之间的正常转发。
5 查看CNI网络是否正常
kubectl get pod -n kube-system 里面查看calico-xxx的pod是否有问题,restart数量是否为0