2020-02-17 16:10:03
其中包含 nslookup, ping, curl, 甚至是 ab、siege 等常用工具以及一个顺手的 Shell。一言不合就可以用静态 Pod 的方式将其运行到 Kubernetes 之中进行内部诊断。
你猜这是干啥的?
各个 Kubernetes 组件的状态检查。可以使用 Ansible 之类的工具进行快速查询。
这里我们首先假设 Pod 工作正常
目前我们的应用均采用的是 NodePort 模式对外提供服务:
逻辑:Service 将 符合其选择器的 Pod 暴露的端口 从 各个 Node 的同一端 口暴露出来对外进行监听。技术:Kube-proxy 通过网络插件,一般利用 Iptables vxLan 等乌七八糟的蜜汁技术,完成对外服务负载均衡,并分发给各个 Pod 的内部 IP 的相应端口。
前面我们假设 Pod 是正常工作的,因此,这里只考虑 Service 的情况。
通过上面的陈述我们能看到大致的一些要素,下面从内向外进行列表:
见后文
这里我们可以使用kubectl describe svc panic-service命令,查看输出内容的endpoint一节内容,如果其中有 Pod 地址,也就说明选择器和 Pod 的标签是匹配的。如果为空,则需要对服务或者 Pod Controller 的定义进行排查。
还可以使用其他 Node 的同一端口测试访问,看是否单一节点的故障。
Kubectl 查看 DNS 各个 Pod 的存活状态。
利用上面提到的工具 Pod 尝试解析服务。失败了其实也没啥办法,删 DNS Pod 重启吧。
看 Pod 的端口是否能够正确侦听,是否符合服务定义。例如 Service 定义了到 Pod 8080 端口的访问,而 Pod 开放的却是 80,这样的情况跟标签无法匹配一样,是很常见的问题。
kubectl get po -o wide | grep -v Running kubectl describe po unhealthy
一般来说,一个行为端正的 Pod,应该是以 Running 状态持续运行的。在进入 Running 之前,大致有调度、创建、初始化等几个环节,如果正常运行之后出了故障,会发生重启。如果在启动容器内进程时出现问题,则会进入 CrashLoopBackOff 的状态。
这几种情况其实不同,不过随性写到这,就不深究了,首先是 describe 一下。
Pod 启动有几个条件:
有符合要求的节点供其运行 Taint 隔离的节点,要求 Pod 有显式声明对该种 Taint 的容错能力,才可以在其上运行。 节点和 Pod 的亲和性定义 Node Selector 的定义 符合其需求的资源 CPU 和 内存的 request limit 定义 可能存在的第三方资源需求定义 加载卷(nfs gluster ceph 等)/Secret/Configmap 的定义 镜像必须存在,可 Pull调度部分一般来说查看 Pod 定义,和节点的 Describe 进行匹配即可,Describe 内容中也会明确说出无合适 Pod。
资源部分 CPU 和内存的 Describe 结果也会很明显。
存储部分,往往就需要更复杂的排查:
首先看看是不是每个 Node 都如此。是否安装了对应的客户端驱动。
对分布式存储的访问网络是否可用。
存储服务容量是否足够分配。
是否能够成功的手工 Mount。
至于对 ConfigMap 和 Secret 的依赖,很简单,Kubectl 查询即可。
这种情况一般来说属于业务内部的问题,可以通过 kubectl logs -f 命令进行查看,目前经验比较多的非业务情况是:
对于 Kubernetes API 进行访问的应用,经常会是因为RBAC 权限不足导致无法启动
依赖的 Service 无法访问。
Kubernetes主机间curl cluster ip时通时不通
04-03
Kubernetes之配置与自定义DNS服务
05-24
Kubernetes集群中Service的滚动更新
02-17
GitHub是如何无缝迁移到Kubernetes的?
04-20
在Kubernetes上使用Sateful Set部署RabbitMQ集群
02-15
手机故障基本检查测试方法
05-26
IdeaCentre B3系列电脑按下主机电源开关但无法开机的处理方法
07-24
IdeaCentre B5系列电脑自检时硬盘检测不到的处理方法
07-21
IdeaPad Y470、Y570 SRS Premium Sound音效软件的使用方法
07-22
Lenovo G550在Windows XP操作系统下触控板驱动安装方法
07-17
Linux文件查看/编辑方法介绍
07-17
Linux系统下find命令递归删除查找目录的方法
06-14
Nginx写IO占用高故障处理
02-23
Outlook 2010如何通过搜索的方式快速定位指定内容
06-08
SureSCSI 212盘柜,如何标识故障硬盘?
06-25
T168 G6使用板载RAID1双盘掉线后的快速修复方法
07-23
Think产品无法进行无线上网的检测方法和解决方法
07-18
Win7系统下如何通过添加打印机方法安装打印机驱动程序?
07-15
Windows安装过程中提示“安装程序无法定位现有系统分区,也无法创建新的系统分区”
03-21
wordpress重定向循环的几种解决方法
07-23
Adobe Muse CC 2017破解版 v2017.1.0.821 附汉化方法
1.71MB
下载LabVIEW 2018注册机下载 v1.2绿色版 附激活方法
552 KB
下载MathWorks MATLAB R2019a破解补丁 附使用方法
18.61GB
下载金舟视频格式转换器 v3.8.8 电脑版 (附使用方法)
44.15M
下载鼠标定位器 v1.0 免费版
1.02M
下载Cutterman下载
1.3M
下载Eusing Utilities下载
1.3M
下载Powerstrip下载
1.28MB
下载msvcr80.dll
234 KB
下载扫描全能王
33.94 MB
下载