K8S集群etcd 某个节点数据不一致如何修复 —— 筑梦之路

这篇具有很好参考价值的文章主要介绍了K8S集群etcd 某个节点数据不一致如何修复 —— 筑梦之路。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景说明

  二进制方式安装的k8s集群,etcd集群有3个节点,某天有一台机器hang住了,无法远程ssh登陆,于是被管理员直接重启了,重启后发现k8s集群删除一个deployment应用,多次刷新一会有,一会没有,于是在3个节点上执行etcd命令去查询该数据,发现被重启的节点上仍存在删除的该应用的数据,于是判断etcd集群的该节点存在脏数据,和其他节点数据不同步。

排障过程

发现问题

# 删除应用
kubectl  -n kube-system delete deploy metrics-server

# 检查应用状态
kubectl  -n kube-system get pod | grep metrics-server

此处多次查询发现一会存在,一会不存在

# 检查etcd节点状态

etcdctl  member  list

etcdctl --endpoints=https://192.168.100.100:2379,https://192.168.100.101:2379,https://192.168.100.102:2379 --write-out=table endpoint status

# 在每个节点上执行查询,找出问题节点

ETCDCTL_API=3 etcdctl  get /registry/deployments/kube-system/metrics-server

  从上面发现etcd集群节点数据不一致的问题 ,虽然停掉该问题节点,集群仍然可以正常使用,但这也只能是临时的办法,2个节点,如果不能选举出谁是leader,会影响集群的健壮性和服务的可靠性,因此,我们需要对该问题节点的etcd服务进行修复。

如何修复

1. 备份数据

在做操作前需要做好正常数据的备份,以免修复不成功无法还原,这点是很重要的,特别是生产环境。

备份方式:

a. 直接打包数据目录

主要打包的目录有data  wal 两个目录

b. etcd 快照方式备份

之前也写过,这里不再赘述。

2. 如何修复

1) 停掉问题节点的etcd服务

systemctl stop  etcd

2) 清空数据目录

主要清空data wal 目录文章来源地址https://www.toymoban.com/news/detail-754540.html

3)获取问题节点etcd的id

etcdctl member list

4) 从集群中移除问题节点

etcdctl  member remove  <问题节点ID>

5)重新将问题节点加入集群

etcdctl [证书] --endpoints="https://192.168.100.100:2379,https://192.168.100.101:2379,https://192.168.100.102:2379" member add etcd-192.168.100.102 --peer-urls="https://192.168.100.102:2380"

 6)修改etcd配置文件:将initial-cluster-state的值new改成existing

sed -i 's/new/existing/g' /etc/systemd/system/etcd.service

systemctl daemon-reload

 7) 启动服务

systemctl  start etcd

systemctl  status etcd

 8) 检查etcd集群状态

到了这里,关于K8S集群etcd 某个节点数据不一致如何修复 —— 筑梦之路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • k8s集群中etcd的备份与恢复

    创建备份目录mkdir /var/lib/etcd_backup 从etcd中的一个正常节点上备份etcd数据 停止所节点的kube-apiserver和etcd 备份原始etcd的路径中的文件 所有节点恢复etcd数据库 master01执行{etcd01节点} work01执行{etcd02节点} work02执行{etcd03节点} 为目录赋予权限 每个节点启动etcd 查看状态 启动kubeapi

    2024年02月11日
    浏览(49)
  • k8s-1.22.3集群etcd备份与恢复

    kubeadm-1.22.3-0.x86_64 kubelet-1.22.3-0.x86_64 kubectl-1.22.3-0.x86_64 kubernetes-cni-0.8.7-0.x86_64 主机名 IP VIP k8s-master01 192.168.10.61 192.168.10.70 k8s-master02 192.168.10.62 k8s-master03 192.168.10.63 k8s-node01 192.168.10.64 k8s-node02 192.168.10.65 注:etcd最新的API版本是v3,与v2相比,v3更高效更清晰。k8s默认使用的etcd

    2024年02月13日
    浏览(38)
  • 基于k8s集群容器化部署etcd集群和apisix服务

    创建StorageClass,支持动态pvc创建,StorageClass使用nfs-client,同时使用华为云sfs作为数据持久化存储目录 角色认证(rabc.yaml) 创建nfs-provisioner(nfs-provisioner.yaml) 设置nfs-client(nfs-client.yaml) 创建svc,后续apisix中会使用到(svc.yaml) 挨个执行以上yaml文件,kubectl apply -f ***.yaml 创建etcd有状态服务(e

    2024年01月19日
    浏览(40)
  • 二进制搭建k8s集群 master和etcd

    etcd作为服务发现系统,有以下的特点: 简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单。 安全:支持SSL证书验证。 快速:单实例支持每秒2k+读操作。 可靠:采用raft算法,实现分布式系统数据的可用性和一致性。 etcd目前默认使用2379端口提供HTTP API服务,

    2024年02月12日
    浏览(47)
  • k8s mysql集群 & 分布式锁 & apiserver & etcd 的关系

    在 Kubernetes (k8s) 中,MySQL 集群可以使用分布式锁来确保在多个实例之间对共享资源的互斥访问。这是通过结合 Kubernetes API Server 和 etcd 来实现的。 Kubernetes API Server 是 k8s 集群中的核心组件之一,它充当了集群的控制平面,提供了对集群资源的管理和操作接口。API Server 是一个

    2024年02月07日
    浏览(51)
  • 重启某个节点、重启电脑服务器后,kubernetes无法运行,k8s无法运行

    环境:ubuntu18.04 LTS 现象:按步骤安装kubernetes后,正常启动,各个命令均可正常使用。服务器重启后,执行命令错误信息如下: The connection to the server 127.0.0.1:6443 was refused - did you specify the right host or port? 排查防火墙设置 查看端口是否打开 如果无法连接,可以关闭防火墙 重新

    2024年02月05日
    浏览(55)
  • k8s集群删除master节点

    1.在另外的master节点执行以下命令 kubectl get node      #查看需要删除的节点名称 kubectl delete node k8s-master01  #删除名为k8s-master01的节点 2.在k8s-master01清空集群配置信息 kubeadm reset  --cri-socket=unix:///var/run/cri-dockerd.sock  #因为我使用的是1.26.0版本的k8s所以需要指定cri rm -rf /var/lib/

    2024年02月13日
    浏览(43)
  • etcd在高磁盘IO的情况下会导致K8S集群不可用的解决思路

    etcd是Kubernetes中用于存储集群状态信息的关键组件。高磁盘IO可能导致etcd性能下降,从而影响整个Kubernetes集群的稳定性。解决这个问题可以从多个方面入手: 优化etcd配置 :检查etcd的配置参数,确保其与您的硬件配置和集群规模相适应。可以调整etcd的并发限制、缓存大小等

    2024年02月15日
    浏览(35)
  • Kubernetes(K8s)从入门到精通系列之十:使用 kubeadm 创建一个高可用 etcd 集群

    默认情况下,kubeadm 在每个控制平面节点上运行一个本地 etcd 实例。也可以使用外部的 etcd 集群,并在不同的主机上提供 etcd 实例。 可以设置HA集群: 使用堆叠控制控制平面节点,其中 etcd 节点与控制平面节点共存 使用外部 etcd 节点,其中 etcd 在与控制平面不同的节点上运行

    2024年02月14日
    浏览(50)
  • k8s其他master节点加入集群命令

      kubeadm join 192.168.0.236:16443 --token 7t2weq.bjbawausm0jaxury         --discovery-token-ca-cert-hash sha256:92175a356db070deb2ddd3823e288e3005a4baeec9b68580dcc11ce4d3767195         --control-plane --certificate-key a01487c705d04e23832dafee30b06e9ef2ed9d946e9c5c1e869d915da043b640

    2024年01月18日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包