首页 > 其他分享 >kubernetes集群故障处理思路

kubernetes集群故障处理思路

时间:2023-05-09 13:55:13浏览次数:33  
标签:node kubernetes 查看 检查 故障 集群 pod

kubernetes集群故障处理思路

1.0 概述

本文主要介绍了pod的创建流程,一般问题处理思路以及一些辅助的检查项,以编快速定位及解决问题

1.1 kubernetes故障处理思路概览图

k8s集群出现故障,一般可以从两大种情况看,个别pod异常和大量pod异常,针对两种情况,可以参考以下处理思路

image

1.2 pod的基本创建流程

image

如上图所示,是用户创建一个 Deployment 的简单流程。主要分为以下步骤:

  1. kubectl 根据用户输入的命令,填充相关字段,将 deployment/pvc 对象发送给 kube-apiserver

  2. kube-apiserver 会有一系列的权限/准入控制,最终将数据序列化存储在 etcd 中

  3. kube-controller-manager 包含大量的控制器,这些控制器会生成 replicaset/pod 对象存储在 etcd 中。pvc 需要绑定到 pv 上,如果没有满足要求的 pv,则通过 Storage Class 动态创建一个 pv 。

  4. kube-sheduler 负责给 pod 选择运行的 node 节点,然后将 NodeName 字段写入 pod 对象中。

  5. kubelet 发现当前 node 节点有待创建的 pod,然后开始调用 CRI 接口去管理 pod 的生命周期。如果有 pvc,还需要将远程磁盘挂载到宿主机目录。

了解基本的创建流程,有利于排查各种可能的故障。故障可以理解为集群生命周期中的一个状态,而创建是整个生命周期的起点。同时,重置、重启都是非常快速地解决问题的方法,都涉及创建。

1.3 一般集群故障的思路

image

如上图所示,是我的集群故障修复思路。主要分为以下步骤:

  1. kubectl get 检查 node、pod 等资源是否符合预期

  2. kubectl describe 查看 Kubernetes 中的事件信息,包括 kube-sheduler 的调度、拉取镜像、启动是否成功等。通常能解决大部分的问题。

  3. kubectl logs 查看负载的日志。当 pod 处于 running,但是又无法正常提供服务时,logs 信息能够给出有用的提示。有时无法查看 pod 中容器的日志,那么需要去 pod 所在的节点查看 docker 的日志。journal 通过 -u 参数指定服务,通过 -f 查看滚动的最新日志,也十分有用。

  4. 如果上面两种思路还不能解决问题,那么恭喜你,又有机会提高自己了。检查底层服务,也就是检查集群的基础环境,包括磁盘、允许的协议、允许的端口、防火墙、网络等。最终能不能解决,取决于你的积累和检索问题答案的能力。

1.4 必要的检查项

这里列举一些必要的检查项,可以辅助排查问题。

  • node 负载

node 负载过高时,有可能导致节点 NotReady。

  • node 磁盘

磁盘包括两部分,大小和 inode。

  • swap、firewall

安装集群时的配置,在重启机器之后,可能会失效。

  • 跨 node 的 pod 通信

跨节点通信异常时,会导致服务无法访问。

  • node 节点上 kubelet、docker 的状态

systemctl status kubelet、systemctl status docker 查看组件的状态。

  • 检查 kubelet 、docker 的配置

ps aux|grep kubelet 、docker info 查看相关配置是否符合预期。

  • 查看存储 CSI 存储插件日志

通常 StorageClass 是通过 CSI 插件提供存储服务的,可以查看相关日志,检查是否有异常输出。

  • 检查 ip 转发功能

执行命令 cat /proc/sys/net/ipv4/ip_forward ,如果输出 0 则表示未开启。ip 转发允许将一个端口的包转发到另外一个端口。未开启时,会导致网络访问失败,tcpdump 中发送了大量 syn 数据包,但是没有 ack 。

  • 检查 Pod CIDR 与主机网段是否冲突

可以先查看 Pod 的 ip,检查其与主机、VPC 的 ip 是否有重叠。如果发生冲突,将会导致服务不可访问,提示 No route to host 类似的错误,需要修改 CIDR 。

标签:node,kubernetes,查看,检查,故障,集群,pod
From: https://www.cnblogs.com/peng-zone/p/17384646.html

相关文章

  • Minikube:搭建部署单机 Kubernetes
    第一步:安装docker安装过程见连接 Centos安装docker-扰扰-博客园(cnblogs.com)第二步:安装VirtualBox2.1、直接使用yum源方式安装VirtualBox,配置正确的repo文件即可:[virtualbox]name=OracleLinux/RHEL/CentOS-$releasever/$basearch-VirtualBoxbaseurl=http......
  • python操作redis集群
    1基础环境分析redis版本:redis-5.0.14 2脚本示例说明:向redis集群里面写入10000000条数据,再查询下这些数据#!/usr/bin/python3importrandomimportstringimporthashlibfromredisclusterimportRedisClusterimportdatetime"""使用redis的方式向redis集群中写入......
  • OceanBase集群缩容
    连接sys租户使用root用户连接sys租户的oceanbase数据库[admin]#mysql-h192.168.1.71-P2883-Doceanbase-uroot@sys-pOceanbase2881-A租户减少副本查看租户信息,sys、my_tenat租户(sys是系统租户,my_tenant是我创建的测试租户)的LOCALITY值包括:zone1、zone2、zone3mysql>s......
  • OceanBase集群扩容
    连接sys租户使用root用户连接sys租户的oceanbase数据库[admin]#mysql-h192.168.1.71-P2883-Doceanbase-uroot@sys-pOceanbase2881-A添加zone查看zone信息,当前OceanBase集群有2个zonemysql>select*fromoceanbase.dba_ob_zones;+-------+------------------------......
  • 【故障补牢】贪吃的 Bing 爬虫,限量供应的应对措施
    相对于【故障公告】,【故障补牢】分享的是园子在发生故障后采取的亡羊补牢措施。在上次被微软Bing爬宕机后(详见【故障公告】被放出的Bing爬虫,又被爬宕机的园子),我们采取了2个应对措施,然后解除了对Bing爬虫的屏蔽。措施1:限流——采用滑动窗口进行限流我们之前采用的限流措......
  • Nacos 使用 CentOS7 进行集群部署
    有了上篇博客的Nacos单机部署经验,对于集群搭建就容易多了。要想搭建Nacos集群,至少需要3个节点。为了统一访问地址,因此需要使用nginx进行转发。本篇博客仍然采用Nacos当前最新的版本2.2.2进行集群搭建。Nacos官网上也有集群搭建的说明,不过有点简略。Nacos的集群搭......
  • skywalking 集群部署
    1、安装包:apache-skywalking-apm-es7-8.7.0.tar.gz下载地址:https://archive.apache.org/dist/skywalking/8.7.0/apache-skywalking-apm-es7-8.7.0.tar.gz2、安装包解压tar -xf  apache-skywalking-apm-es7-8.7.0.tar.gzyuminstalljava-1.8.0-openjdk-devel-y  ......
  • 搭建 Kubernetes 集群
    简介Kubernetes是一个开源系统,用于容器化应用的自动部署、扩缩和管理。它将构成应用的容器按逻辑单位进行分组以便于管理和发现。搭建环境:CentOSv7.6.1810docker-ce-versionv23.0.5kubernetes-versionv1.23.6本次使用2台服务器进行搭建,运行下面命令写入/etc/hosts文件(......
  • Hbase跨集群迁移以及常用命令
    场景:由于Hbase版本升级以及集群切换,现需要将Hbase从A集群(源)迁移至B集群(目的)迁移过程:将源A集群的Hbase需要迁移的表(注意namespace)通过snapshot方式打成快照,然后再通过ExportSnapshot方式迁移至目的B集群,此时目的集群的HDFS目录下的hbase目录会生成.hbase_snapshot和archive目录......
  • 四轮轮毂电机驱动车辆,驱动电机故障状态估计(UKF)
    四轮轮毂电机驱动车辆,驱动电机故障状态估计(UKF)软件使用:Matlab/Simulink适用场景:采用无迹卡尔曼滤波UKF进行轮毂电机状态估计,失效电机估计状态为0,正常电机状态为1。产品simulink源码包含如下模块:→工况:方向盘正弦输入→整车模块:7自由度整车模型→估计模块:无迹卡尔曼滤波包含:simulin......