ETCD는 Kubernetes의 핵심 데이터 저장소로, 클러스터 상태와 구성을 저장합니다. 이 글에서는 ETCD 관리에 필요한 환경 변수 설정부터 스냅샷 저장 및 복구 방법을 단계별로 설명하겠습니다.
1. 환경 변수 설정
ETCD 명령어를 실행하기 전에 환경 변수를 설정해야 합니다. 아래 코드는 ETCDCTL_API와 연결 정보 등을 설정하는 방법을 보여줍니다.
export ETCDCTL_API=3
export ETCDCTL_ENDPOINTS=https://127.0.0.1:2379
export ETCDCTL_CACERT=/etc/kubernetes/pki/etcd/ca.crt
export ETCDCTL_CERT=/etc/kubernetes/pki/etcd/server.crt
export ETCDCTL_KEY=/etc/kubernetes/pki/etcd/server.key
설명:
ETCDCTL_API=3: ETCD의 API 버전을 설정합니다. 일반적으로 최신 버전인 3을 사용합니다.ETCDCTL_ENDPOINTS: ETCD의 엔드포인트 URL을 지정합니다.ETCDCTL_CACERT,ETCDCTL_CERT,ETCDCTL_KEY: SSL/TLS 인증서를 경로로 지정합니다.
2. 멤버 리스트 확인
ETCD 클러스터에 포함된 노드의 목록을 확인하려면 다음 명령어를 실행합니다.
etcdctl --endpoints=https://127.0.0.1:2379 \\
--cacert=/etc/kubernetes/pki/etcd/ca.crt \\
--cert=/etc/kubernetes/pki/etcd/peer.crt \\
--key=/etc/kubernetes/pki/etcd/peer.key \\
member list
출력 예시:
1c52c7e5f2a5d6a2, started, master1, <https://222.122.41.82:2380>
4d14b8ecf03e56f9, started, master2, <https://222.122.41.83:2380>
92c89b5ecb7e4db1, started, master3, <https://222.122.41.84>:
이 명령어를 통해 클러스터의 각 멤버 상태와 연결 정보를 확인할 수 있습니다.
3. 스냅샷 저장하기
ETCD 데이터를 백업하려면 **스냅샷(snapshot)**을 저장해야 합니다. 다음 명령어를 사용합니다.
etcdctl --endpoints=https://127.0.0.1:2379 \\
--cacert=/etc/kubernetes/pki/etcd/ca.crt \\
--cert=/etc/kubernetes/pki/etcd/server.crt \\
--key=/etc/kubernetes/pki/etcd/server.key \\
snapshot save /root/snapshot.db
출력 예시:
Snapshot saved at /root/snapshot.db
중요: 스냅샷 파일(/root/snapshot.db)은 안전한 장소에 저장해야 합니다. 이는 ETCD 데이터를 복구할 때 사용됩니다.
4. 스냅샷으로 복구하기
ETCD 클러스터를 복구하려면 저장된 스냅샷을 기반으로 복원해야 합니다. 다음 명령어를 사용합니다.
etcdctl --endpoints=https://127.0.0.1:2379 \\
--cacert=/etc/kubernetes/pki/etcd/ca.crt \\
--cert=/etc/kubernetes/pki/etcd/peer.crt \\
--key=/etc/kubernetes/pki/etcd/peer.key \\
snapshot restore /root/snapshot.db \\
--name master2 \\
--initial-cluster master1=https://222.122.41.82:2380,master2=https://222.122.41.83:2380,master3=https://222.122.41.84:2380 \\
--initial-advertise-peer-urls <https://222.122.41.83:2380> \\
--data-dir /var/lib/etcd
옵션 설명:
-name: 복구할 노드의 이름입니다.-initial-cluster: 클러스터 내 모든 노드의 정보를 제공합니다.-initial-advertise-peer-urls: 복구된 노드가 다른 멤버와 통신할 URL을 지정합니다.-data-dir: 데이터를 복구할 디렉터리를 지정합니다.
주의: 복구 작업 후에는 클러스터 구성을 다시 확인하고 테스트해야 합니다.
5. ETCD 상태 확인
ETCD의 연결 상태를 확인하려면 아래 명령어를 실행합니다.
etcdctl endpoint health
출력 예시:
<https://127.0.0.1:2379> is healthy: successfully committed proposal: took = 1.234ms
이 명령어는 ETCD가 정상적으로 작동하고 있는지 여부를 알려줍니다.
결론
ETCD는 Kubernetes 클러스터에서 매우 중요한 역할을 합니다. 따라서 정기적으로 스냅샷을 저장하고 복구 절차를 익혀 두는 것이 중요합니다. 이 가이드에 따라 환경을 설정하고 데이터를 안전하게 관리해 보세요.
Tip: 운영 중인 클러스터의 데이터를 변경하거나 복구 작업을 수행할 때는 항상 백업을 먼저 진행하십시오.