• kubernetes故障收集


    二进制安装k8s,日志所在位置 /opt/kubernetes/logs,命令查看集群主机日志命令 journalctl -u kubelet

    1.k8s 污点 node.kubernetes.io/disk-pressure

    kubectl taint node k8s-node2 node.kubernetes.io/disk-pressure-

    问题描述:删除不了这个污点,删除了也会自动添加,新建的pod无法分配到这个节点

    解决办法:磁盘快满导致,清理磁盘容量,如果还有节点还是删除不了污点 那就重启那个节点


    2.二进制安装K8S报错

    image

    问题描述:如上图,未关闭selinux和系统时间不同步导致

    解决办法:关闭selinux,同步时间

    setenforce 0

    sed -i 's/enforcing/disabled/' /etc/selinux/config

    cat  /etc/selinux/config       #确认已经更改

    时间同步
    yum install ntpdate -y
    ntpdate time.windows.com


    3.k8sadm方式安装-节点加入集群报错

    image


    问题描述:如上图

    解决办法:所有需要加入master的节点执行

    echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables


    4.k8s修改主机名后新建POD报错

    Error from server: error dialing backend: dial tcp: lookup master-node on 100.100.2.136:53: no such host

    解决办法: 改回原有主机名


    4.master也作为节点加入集群正常,但其他节点加入后报错

    image

    问题描述:如上图

    解决办法:安装替换默认yum安装的docker,采用二进制安装的docker后正常


    5.离线安装kubectl -f apply coredns.yaml是时coredns的pod一直重启

    问题描述:安装coredns,running后不断重启

    解决办法: vim coredns.yaml   删除里面的loop,如下图

    image

    kubeapply -f apply coredns.yaml


    5.1大量pod出现evicted(被驱逐状态),产生大量日志/opt/kubernetes/logs/占满磁盘,导致其他命名空间的项目的pod也出现大量evicted

    k8s有种机制,当服务器磁盘使用超过85%之后就不允许节点再次创建了,所以节点创建之后就被驱逐了

    问题描述:因为有一个节点磁盘使用率百分之88,所有新建的pod到这个节点就会被驱逐,而其他节点也正好没有资源去新建这些pod,所以就出现pod不断

    的被驱逐,影响到所有命令空间的所有pod

    解决办法:

    1.删除所有为evicted状态的pod

    kubectl get pods -n zhxy | grep Evicted | awk '{print $1}' | xargs kubectl delete pod -n zhxy

    2.清理所有节点的磁盘空间,或者增加资源

    cd /

    du -sh * | sort –n

    一层一层找找最后用rm 删除日志或者大文件


    6.常见故障排查思路

    kubectl get pod -n kube-system   查看集群组件状态

    查看集群节点是否处于 Ready 状态 kubectl get node

    a. 如果是Ready状态,再使用kubectl describe node k8s-node2 查看资源使用率 kubectl top node

    b. 如果是NotReady,则使用kubectl get node -owide 查看对应的节点,然后登陆到对应节点上, 查看kubelet 和docker 服务是否正常


    kubectl get cs 查看集群关键组件(etc、scheduler、controller-manager)的状态是否是 Healthy

    a. 如果是,不予理睬

    b. 如果是Unhealthy 状态,使用则使用kubectl get node -owide 查看对应的节点,然后登陆到对应节点上查看kubelet 和docker 服务是否正常;


    7.磁盘满导致etcd故障

    https://www.codercto.com/a/50013.html


    8.K8S生产环境故障排查一(POD和节点问题排查)

    https://blog.csdn.net/qq_25037905/article/details/117232193


    9.K8S调度机制和Pod基本故障排查

    https://blog.csdn.net/weixin_50344814/article/details/115283251?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-0.searchformbaiduhighlight&spm=1001.2101.3001.4242

  • 相关阅读:
    在mac系统上安装Eclipse,编写java程序
    显示和隐藏Mac隐藏文件的终端命令
    iOS中UIKit——UIDataDetectors(数据检测器)它将电话、邮件、网址等变为链接
    C语言中的关键字
    IOS基础——静态方法(类方法)和实例方法
    IOS基础——alloc、init和new方法
    IOS基础——实例变量四种范围类型
    iOS中UIKit——UIFont得到iOS设备上的系统字体
    iOS中UIKit——UIButton设置边框
    IOS中获取屏幕尺寸
  • 原文地址:https://www.cnblogs.com/pengrj/p/16190941.html
Copyright © 2020-2023  润新知