개요

Kubernetes 환경에서 ETCD를 구성하는 방식에는 크게 두 가지가 있다.

 

1. 내부(Stacked) ETCD

 

Kubernetes 마스터 노드에 ETCD를 Static pod로 직접 올리는 방식이다. 

Kubernetes 설치와 함께 자동으로 구성되므로, 설정이 간단하고 Kubernetes와 ETCD가 같은 환경에 있으므로 네트워크 지연이 적고 또 별도의 관리가 필요 없어 유지보수가 편리하다.

 

하지만 마스터 노드가 동시에 데이터 저장소 역할을 수행하므로, 대규모 클러스터에서는 병목 현상이 발생해 속도가 느려질 수 있고 마스터 노드에 장애가 발생하면 ETCD에 저장된 데이터 또한 악영향을 받을 수 있다.

 

2. 외부(External) ETCD

 

Kubernetes 클러스터 외부에 별도로 구성된 ETCD이다.

 

ETCD가 독립된 노드에서 실행되므로 마스터 노드에 장애가 발생하더라도 ETCD 데이터가 보호가 되며 

ETCD 데이터가 안전하게 유지되므로 고가용성을 보장하기 쉽다.

 

하지만 외부 ETCD는 별도로 설치 및 관리가 필요하므로 초기 설정이 복잡하다.

Kubernetes와 ETCD 간의 네트워크 통신이 필요하므로, 네트워크 환경에 따라 성능이 영향을 받을 수 있다.

또 ETCD 서버를 별도로 모니터링하고 유지보수 해야 한다.

 

실습

 

ETCD Server 확인

 

실습환경에서 ETCD가 Service 형태로 ETCD 서버에 구축되어 있는 것을 확인할 수 있다.

 

 

ETCD Backup 

 

ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
  --cacert=/etc/etcd/pki/ca.pem \
  --cert=/etc/etcd/pki/etcd.pem \
  --key=/etc/etcd/pki/etcd-key.pem \
  snapshot save ./cluster2.db

 

ETCD Restore

 

ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
  --cacert=/etc/etcd/pki/ca.pem \
  --cert=/etc/etcd/pki/etcd.pem \
  --key=/etc/etcd/pki/etcd-key.pem \
  --data-dir /var/lib/etcd-data-new snapshot restore ./cluster2.db

 

 

Restore 후에 --data-dir에 명시된 위치를 바꿔주어야 정상적으로 복원된다.

 

vi /etc/systemd/system/etcd.service

 

 

마지막으로 복원한 etcd data 폴더의 권한을 조정한 후 etcd 서비스를 재시작한다. 

 

chown -R etcd:etcd /var/lib/etcd-data-new

systemctl daemon-reload
systemctl restart etcd