k8s实战kubernetes错误排查之etcd篇
Posted Friends of the wind
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s实战kubernetes错误排查之etcd篇相关的知识,希望对你有一定的参考价值。
学习目标
提示:无论是实验环境,还是生产,k8s集群环境不一样,所以思维逻辑是一样但命令需要适时地调整
通过本节的学习,您将获得处理k8s集群问题的通用方法,针对etcd方面问题具体,如何快速排查处理。
知识充电:什么是etcd ?
它是一个简单的数据库,k8s默认使用它存储集群的配置信息。
为什么不选择mysql等其他更好的数据库服务?
因为etcd有四大特点:
简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单
安全:支持SSL证书验证
快速:根据官方提供的benchmark数据,单实例支持每秒2k+读操作
可靠:采用raft算法,实现分布式系统数据的可用性和一致性
内容
背景:其他部门反馈,k8s集群的前端web管理页面无法对k8s集群进行增删查的操作,并会有报错提示,显示请求数过多。
一、k8s集群问题处理流程:
1.从已知信息获取更多有助解决问题的信息
根据报错提示信息估计,是计算资源不足以支撑处理请求的能力;反馈,出故障前后,有没有执行过什么操作,创建pod及在集群安装服务等等。
2.登录集群节点命令获取更多有助解决问题的信息
- 查看集群master与worker节点是否可以通信
Kubectl get no
- 执行命令不返回查询结果,卡主,最后会报错。由此判定集群master无法联系到worker节点
- ssh登录其他master节点,用同样命令查看,发现,有一个master节点使用无法ssh登录到。
二、问题描述:
根据其他人员反馈及登录节点查看,定义问题:
1.无法ssh登录到集群的某个master节点
2.可以登录到的master节点执行命令无法获取node信息
解决过程
提示:一个问题的解决,可能会导致另一个问题产生,所以需要全局考虑,避免将问题扩大;或者,在解决的过程,会发现新问题。
问题1:查看网卡配置文件,发现配置信息不正确;但是没有人员对其进行修改过,判断是服务器重启导致网卡配置文件丢失,导致原来ip消失。
(1)配置静态ip地址
vim /etc/sysconfig/network-scripts/ifcfg-eth0
(2)重启有问题的网卡配置
ifdown ifcfg-eth0;ifup ifcfg-eth0
(3) 登录验证
发现master1无法登录,报错,被拒绝
换其他master登录,可以登录但是需要输入密码;造成这个的原因是,故障主机的ssh密钥文件也丢失;而本机是以密钥方式登录,所以会拒绝,其他master节点没有配置密钥,所以需要输入密码,并且会成功登录。
问题2:查看docker,发现有的节点docker服务死掉;docker服务正常的节点,etcd处于退出状态。
(1)docker服务死掉
尝试重启docker服务;但是,报错,查看日志分析,解决方案,重启这台服务器;之后docker服务恢复
(2)etcd异常
登录多个etcd节点查看配置信息,综合分析后得出,etcd配置文件损坏。处理流程:从集群移除etcd,之后再次创建使其生成新的配置文件。
- 使用shell脚本先备份原etcd数据
- 命令解散etcd集群
- 创建新的etcd集群
以上是关于k8s实战kubernetes错误排查之etcd篇的主要内容,如果未能解决你的问题,请参考以下文章
云原生之kubernetes实战kubernetes集群的证书管理