美文网首页CKA认证
【K8s 精选】CKA - 如何排查集群组件的故障

【K8s 精选】CKA - 如何排查集群组件的故障

作者: 熊本极客 | 来源:发表于2022-03-28 19:36 被阅读0次

    1.了解集群总体情况

    查询节点信息

    $kubectl get nodes -owide
    NAME                STATUS   ROLES                  AGE   VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE  KERNEL-VERSION   CONTAINER-RUNTIME
    worker-0001     Ready    <none>                 21d   v1.20.0   192.168.1.50    <none>        EulerOS 2.0   4.18.0.x86_64   docker://18.9.0
    worker-0002     Ready    <none>                 21d   v1.20.0   192.168.1.173   <none>        EulerOS 2.0   4.18.0.x86_64   docker://18.9.0
    master-0001    Ready    control-plane,master   21d   v1.20.0   192.168.0.213   <none>        EulerOS 2.0   4.18.0.x86_64   docker://18.9.0
    master-0002    Ready    control-plane,master   21d   v1.20.0   192.168.0.37    <none>        EulerOS 2.0   4.18.0.x86_64   docker://18.9.0
    master-0003    Ready    control-plane,master   21d   v1.20.0   192.168.0.249   <none>        EulerOS 2.0   4.18.0.x86_64   docker://18.9.0
    node-0          Ready    <none>                 21d   v1.20.0   192.168.0.152   <none>        EulerOS 2.0   4.18.0.x86_64   docker://18.9.0
    node-1          Ready    <none>                 21d   v1.20.0   192.168.0.42    <none>        EulerOS 2.0  4.18.0.x86_64   docker://18.9.0
    node-2          Ready    <none>                 21d   v1.20.0   192.168.0.187   <none>        EulerOS 2.0  4.18.0.x86_64   docker://18.9.0
    

    查询集群的总体健康状况

    $kubectl cluster-info
    Kubernetes control plane is running at https://192.168.0.60:6443
    KubeDNS is running at https://192.168.0.60:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
    
    $kubectl cluster-info dump
    

    2.查看 Kubernetes 组件的日志

    主节点 Master 日志
    API Server 的默认日志路径是 /var/log/kube-apiserver-xxx.log
    Scheduler 调度器的默认日志路径是 /var/log/kube-scheduler-xxx.log
    Controller Manager 副本控制器的默认日志路径是 /var/log/kube-controller-manager-xxx.log

    $ls /var/log/
    coredns-fcd78eab6a05a74abe7eb6566c55562c37f3d3d59b301bc4e12dae64081fe4d7.log
    etcd-0817bf1b89eaacc27e9870c986af8c3eaa14082d8d18b931243780cb97ba74f0.log
    etcd-0c2cebc0bdf3b354918afa4edbf31f9d0b2faf755dc396e41c3ec115cc007690.log
    kube-apiserver-291a08641116cc4e5b7dac6c8f17fd1b014a89efb5a735492734def136a8a9e1.log
    kube-apiserver-c7cfd8affa7ab2b940fad25997f878ae0fb47c7c957f85a033f787eae87eb27f.log
    kube-controller-manager-e49e67a5e1d94d12921fef52ba8be7da62f9980c150eba3c79d64cc976c22c3b.log
    kube-flannel-ds-mlh9r_kube-system_install-cni-c41196adaf23151a7028f13d0e1052e541c349bf09c9ee9ce6b211aa9a4499ab.log
    kube-flannel-ds-mlh9r_kube-system_kube-flannel-99818f4e512c7f8353ca8d9781835f8ac7e3c33ee474e3f7462e2437d9ae244c.log
    kube-proxy-bxl8q_kube-system_kube-proxy-c2f9cf8aaed9ae8afd4215c2e99fb9b117525d099c87d0c4386358b74c064223.log
    kube-scheduler-45504c0c811e2ba330188a75a591fdff7329ed77d8806c3acf7bb9a8695f24bd.log
    kube-scheduler-bf1b2919e4e8a5cc5ef8f1b0afaec2c4f61f22abcadda9e53c9b0e30285b230f.log
    

    工作节点 Node 日志
    Kubelet 的默认日志路径在工作节点的 /var/log/kubelet_xxx.log,或者使用利用 journalctl ,例如 journalctl -u kubelet |grep xxx 搜索关键字。
    Kube Proxy 负责均衡器的默认日志路径在工作节点的 /var/log/kube-proxy_xxx.log

    #进入目标的工作节点
    $ssh node-1
    #查看pod的日志文件
    $ls /var/log
    deployment-flink-jobmanager-5f89c74868-8plpm_7e911648-ca73-4202-b968-48c47d1e2c7d.log 
    kube-proxy-bxj8x_aca6dae2-7965-4ed2-8096-f43a1dbec22f.log
    

    3.集群故障的常见原因及其解决方案

    3.1 API Server 所在的 VM 关机或者 API Server 崩溃

    常见表象
    ① 不能停止、更新后者启动新的 PodService 或者副本控制器 Deployment
    ② 现有的 PodService 在不依赖 Kubernetes API 的情况下应该能继续正常工作
    缓解手段:自动 VM 重启功能

    3.2 API Server 的后端存储数据丢失

    常见表象
    API Server 可能启动失败
    Kubelet 将不能访问 API Server,但是能够继续运行之前的 Pod 和提供相同的 Proxy
    ③ 在 API Server 重启之前,需要手动恢复或者重建 API Server 的状态
    缓解手段:在运行 Etcd 的 VM,使用可靠的分布式存储卷,例如 AWS EBS 卷

    3.3 Kubernetes 组件(节点控制器、副本控制器管理器、调度器等)所在的 VM 关机或者崩溃

    常见表象
    ① 这些组件对应的功能会异常
    ② 如果有这些组件有多副本,其功能可能不受影响
    缓解手段:采用高可用配置,可以容许 1 个或者多个节点或组件同时出现故障

    3.4 单个节点(VM 或者物理机)关机或者 Kubelet 故障

    常见表象:此节点上的所有 Pod 都停止运行
    缓解手段
    ① 对该 Pod 使用副本控制器 Deployment
    Pod 设置为容许异常重启

    3.5 网络阻断

    常见表象:分区 A 认为分区 B 中所有的节点都已宕机;分区 B 认为 API Servre (位于分区 A)宕机

    相关文章

      网友评论

        本文标题:【K8s 精选】CKA - 如何排查集群组件的故障

        本文链接:https://www.haomeiwen.com/subject/ilnvdrtx.html