电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

K8S命令kubectl执行响应很慢问题分析与解决

来源:金蝶云社区作者:金蝶2024-09-235

K8S命令kubectl执行响应很慢问题分析与解决

要分析kubectl执行响应很慢的原因,首先要了解kubectl与K8S组件的关系,我们可以简单地梳理如下图的关系:



如果执行kubectl响应慢或者超时,需要查看与kubelet连接的kube-apiserver和etcd组件运行情况。

这里提前说一个结论,命令执行慢,大多情况都与etcd运行状况相关,本文涉及到etcd的操作和优化。


查看Kube-apiserver

1、通过命令查看k8s系统组件的运行情况:

kubectl get pod -n kube-system  # 可能会发现kube-apiserver/controller/schduler组件重启了很多次


2、查看kube-apiserver的运行情况和日志

kubectl describe pod kube-apiserver-xxxx -n kube-system  #执行该命令可能看不出什么异常

kubectl logs -f --tail 100  kube-apiserver-xxxx -n kube-system  #异常原因一般在日志里

注:如果 kube-apiserver未正常运行,kubelet命令是无用的,此时需要使用docker命令替代:

docker ps -a|grep kube-apiserver

docker logs -f --tail 100  【kube-apiserver容器ID】


类似的kube-apiserver日志:


kube-apiserver日志,可能会发现比较明显的错误原因,常见的错误是连接etcd被拒接或超时,那下一步就是要查看etcd的运行情况了。

还有一种情况是,kube-apiserver没有什么异常日志,就是执行kubelet命令响应比较慢,偶尔卡顿,我们依然要排查etcd。


查看etcd

同样先查看etcd的运行状态和日志

kubectl describe pod etcd-xxxx -n kube-system 

kubectl logs -f --tail 100  etcd-xxxx -n kube-system 

注:如果 kube-apiserver未正常运行,kubelet命令是无用的,此时需要使用docker命令替代:

docker ps -a|grep  etcd

docker logs -f --tail 100  【etcd容器ID】


通过etcd日志,我们可以发现

1、etcd运行异常。需要进一步分析,首先重启etcd,或者重启docker和主机,可以恢复正常。

如果是集群部署,要查看是否是其它的etcd节点停止,无法连接上,则要从etcd集群角度进行etcd集群恢复。

另外,还有可能是etcd的数据损坏了,如果有备份数据,可以进行恢复,没有备份数据,那只能重装k8s。如果是高可用部署,可以简单地删除当前etcd的数据,通过其它节点同步来恢复,具体可参考文章:K8S集群 etcd 异常恢复


2、etcd频繁选主。

主机cpu使用率太高,影响了etcd运行,这种情况针对cpu利用率高的现象进行解决即可,找到并杀死cpu高的进程,或master节点不要部署业务容器。

另外就是主机的磁盘读写性能差,etcd对磁盘的要求比较高,一般情况要求使用SSD磁盘。如果不能更换磁盘,可以优化一下参数,增加超时和选主的时间,同时设置etcd数据清理参数。


执行etcdctl命令,查看一下etcd或etcd集群的情况。

先把etcdctl 命令从etcd容器里拷出来:

docker ps |grep etcd  #找到etcd容器的ID,比如是bde41e0d3aef

docker cp bde41e0d3aef:/usr/local/bin/etcdctl ./ 


然后查看etcd节点健康情况:

ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt \

--cert=/etc/kubernetes/pki/etcd/peer.crt \

--key=/etc/kubernetes/pki/etcd/peer.key \

--endpoints=https://10.200.192.111:2379,https://10.200.192.112:2379,https://10.200.192.113:2379\

--write-out=table endpoint health


或者查看etcd节点状态:

ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt \

--cer

K8S命令kubectl执行响应很慢问题分析与解决

要分析kubectl执行响应很慢的原因,首先要了解kubectl与K8S组件的关系,我们可以简单地梳理如下图的关系:如果执行kubectl响应慢或者超时,...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信