美文网首页Openshift:可靠的Kubernetes发行版
OpenShift中etcd集群的某个etcd服务文件损坏,导致

OpenShift中etcd集群的某个etcd服务文件损坏,导致

作者: 潘晓华Michael | 来源:发表于2021-01-25 14:35 被阅读0次
OpenShift ETCD

问题

etcd集群中某个etcd出现故障,使用docker ps -a | grep etcd | grep -v POD查看etcd节点,发现它异常退出。

$ docker logs -f <etcd-container-id>
....
etcdserver : open wal error: wal: file not found 

恢复步骤

大方向步骤:
一、将问题etcd节点从etcd集群剥离;
二、将恢复的新的etcd节点添加到etcd集群。
具体步骤如下:

  1. 查看etcd状态
$ etcdctl2 cluster-health
$ ## 获取问题节点的member ID
$ etcdctl2 member remove  <member ID>
$ ## 将问题etcd服务从etcd集群中删除
  1. 停止问题节点上的etcd服务
$ mkdir -p /etc/origin/node/pods-stopped
$ mv /etc/origin/node/pods/* /etc/origin/node/pods-stopped/
  1. 删除问题节点上的etcd数据
$ rm -rf /var/lib/etcd/*

4.更新ansible中的inventory hosts内容,设置new_etcd配置

[OSEv3:children]
masters
etcd
nodes
new_etcd

[OSEv3:vars]
openshift_is_atomic=false

[masters]
master-1
#master-2
master-3

[nodes]
...

[new_etcd]
master-2

需要注意:将问题节点从masters中注释掉,否则执行etcd扩容会报如下错误。
TASK [Run variable sanity checks]
fatal: [master-1]: FAILED! => {"msg": "last_checked_host: master-2, last_checked_var: ansible_python;'NoneType' object has no attribute '__getitem__'"}

  1. 更新节点的node group配置
$ ansible-playbook playbooks/openshift-master/openshift_node_group.yml
  1. 执行etcd扩容脚本
$ ansible-playbook playbooks/openshift-etcd/scaleup.yml
  1. 执行完成扩容后,进行验证。发现master-2的节点etcd是通过本地服务运行的。可执行以下命令配置etcd为pod运行
$ systemctl stop etcd
$ systemctl disable etcd
$ cp etcd-backup/etcd.yaml /etc/origin/node/pods/etcd.yaml

参考文章

Adding etcd Hosts to existing cluster
`

相关文章

网友评论

    本文标题:OpenShift中etcd集群的某个etcd服务文件损坏,导致

    本文链接:https://www.haomeiwen.com/subject/cjmbzktx.html