kubernetes(八)问题排查
1.Mastermaster上的组件是运行k8s的不可缺少的一部分,共同管理k8s集群1)如果apiserver出问题apiserver是K8s集群最重要的组件,提供了k8s各类资源对象(pod,RC,Service等)的增删改查及watch等HTTP Rest接口,是整个系统的数据总线和数据中心。所有的命令都需要和apiserver进行交互,是k8s的"大脑",ap...
1.Master
master上的组件是运行k8s的不可缺少的一部分,共同管理k8s集群
1)如果apiserver出问题
apiserver是K8s集群最重要的组件,提供了k8s各类资源对象(pod,RC,Service等)的增删改查及watch等HTTP Rest接口,是 整个系统的数据总线和数据中心。所有的命令都需要和apiserver进行交互,是k8s的"大脑",api-server不可用会导致整个K8s集 群不可用
2)如果etcd出问题
etcd是一个高可用的分布式键值(key-value)数据库,主要用于共享配置和服务发现
(服务发现:在一个分布式集群中的服务如何才能找到对方并与其建立连接)
apiserver和etcd无法通信,会导致无法找到对应的node,那么kubelet也就无法更新所在node上的状态
3)如果scheduler或者controller manager出现问题
scheduler负责调度 : 为每一个Pod从Node列表中选择一个合适的Node
controller manager : 负责集群内的Node,Pod副本,namespace等的管理,当某个Node意外宕机,CM会及时发现此故障并执 行自动化修复流程,确保集群始终处于预期的工作状态
二者出现问题会导致deployment,pod,service等资源无法正常分配到Node,无法正常运行
解决方案:出现问题时,自动重启或者搭建高可用的master集群
2.Worker
worker节点挂掉或者上面的kubelet服务出现问题时,worker上的pod则无法正常运行
3.Addons
dns和网络插件比如calico发生问题时,集群内的网络无法正常通信,并且无法根据服务名称进行解析
4.系统问题排查
#查看Node的状态
kubectl get nodes
kubectl describe node-name
#查看集群master和worker组件的日志
journalctl -u apiserver
journalctl -u scheduler
journalctl -u kubelet
journalctl -u kube-proxy ...
5.Pod的问题排查
K8s中最小的操作单元是Pod,最重要的操作也是Pod,其他资源的排查可以参照Pod问题的排查
#查看Pod运行情况
kubectl get pods -n namespace
#查看Pod的具体描述,定位问题
kubectl describe pod pod-name -n namespace
#检查Pod对应的yaml是否有误
kubectl get pod pod-name -o yaml
#查看pod日志
kubectl logs pod-name
Pod可能会出现哪些问题及解决方案
1.处于Pending状态 说明Pod还没有被调度到某个node上,可以describe一下详情。可能因为资源不足,端口被占用等。
2.处于Waiting/ContainerCreating状态 可能因为镜像拉取失败,或者是网络插件的问题,比如calico,或者是容器本身的问题,可以检查一下容器的yaml文 件内容和Dockerfile的书写
3.处于ImagePullBackOff状态 镜像拉取失败,可能是镜像不存在,或者没有权限拉取。
4.处于CrashLoopBackOff状态 Pod之前启动成功过,但是又失败了,不断在重启。
5.处于Error状态 有些内容不存在,比如ConfigMap,PV,需要创建一下,或者没有权限。
6.处于Terminating状态 说明Pod正在停止
7.处于Unknown状态 说明K8s已经失去对Pod的管理监
更多推荐
所有评论(0)