5.4.5. etcd 호스트 제거
복원 후 etcd 호스트에 장애가 발생하면 클러스터에서 제거하십시오.
모든 마스터 호스트에서 수행할 단계
프로시저
etcd 클러스터에서 서로 다른 etcd 호스트를 제거하십시오. 각 etcd 노드에 대해 다음 명령을 실행하십시오.
# etcdctl3 --endpoints=https://<surviving host IP>:2379 --cacert=/etc/etcd/ca.crt --cert=/etc/etcd/peer.crt --key=/etc/etcd/peer.key member remove <failed member ID>
모든 마스터에서 마스터 API 서비스를 다시 시작하십시오.
# master-restart api restart-master controller
현재 etcd 클러스터에서 수행할 단계
프로시저
클러스터에서 실패한 호스트를 제거하십시오.
# etcdctl2 cluster-health member 5ee217d19001 is healthy: got healthy result from https://192.168.55.12:2379 member 2a529ba1840722c0 is healthy: got healthy result from https://192.168.55.8:2379 failed to check the health of member 8372784203e11288 on https://192.168.55.21:2379: Get https://192.168.55.21:2379/health: dial tcp 192.168.55.21:2379: getsockopt: connection refused member 8372784203e11288 is unreachable: [https://192.168.55.21:2379] are all unreachable member ed4f0efd277d7599 is healthy: got healthy result from https://192.168.55.13:2379 cluster is healthy # etcdctl2 member remove 8372784203e11288 1 Removed member 8372784203e11288 from cluster # etcdctl2 cluster-health member 5ee217d19001 is healthy: got healthy result from https://192.168.55.12:2379 member 2a529ba1840722c0 is healthy: got healthy result from https://192.168.55.8:2379 member ed4f0efd277d7599 is healthy: got healthy result from https://192.168.55.13:2379 cluster is healthy
- 1
remove
명령에는 호스트 이름이 아니라 etcd ID가 필요합니다.
etcd 서비스를 다시 시작할 때 etcd 구성이 실패한 호스트를 사용하지 않게 하려면 나머지 모든 etcd 호스트에서
/etc/etcd/etcd.conf
파일을 수정하고ETCD_INITIAL_CLUSTER
변수의 값에서 실패한 호스트를 제거하십시오.# vi /etc/etcd/etcd.conf
예를 들면 다음과 같습니다.
ETCD_INITIAL_CLUSTER=master-0.example.com=https://192.168.55.8:2380,master-1.example.com=https://192.168.55.12:2380,master-2.example.com=https://192.168.55.13:2380
이는 다음이 됩니다.
ETCD_INITIAL_CLUSTER=master-0.example.com=https://192.168.55.8:2380,master-1.example.com=https://192.168.55.12:2380
참고실패한 호스트는
etcdctl
을 사용하여 제거되므로 etcd 서비스를 다시 시작할 필요가 없습니다.클러스터의 현재 상태를 반영하고 플레이북을 다시 실행할 때 문제가 발생하지 않도록 Ansible 인벤토리 파일을 수정하십시오.
[OSEv3:children] masters nodes etcd ... [OUTPUT ABBREVIATED] ... [etcd] master-0.example.com master-1.example.com
Flannel을 사용하는 경우 모든 호스트에서
/etc/sysconfig/flanneld
에 있는flanneld
서비스 구성을 수정하고 etcd 호스트를 제거하십시오.FLANNEL_ETCD_ENDPOINTS=https://master-0.example.com:2379,https://master-1.example.com:2379,https://master-2.example.com:2379
flanneld
서비스를 다시 시작하십시오.# systemctl restart flanneld.service