본문 바로가기

쿠버네티스

[쿠버네티스] ETCD 관련 정리

728x90

쿠버네티스와 Etcd 개념 및 클러스터 설정


1. Etcd의 역할과 중요성

  • Etcd는 쿠버네티스에서 클러스터의 상태를 저장하는 분산 키-값 데이터 저장소.
  • 저장 데이터:
    • 노드, 포드, 복제본 세트, 시크릿, 서비스 계정, 역할 등.
  • 쿠버네티스 API 서버와 통신하며, 클러스터 상태 변경 사항은 Etcd에 업데이트되어야 완료로 간주됨.
  • Etcd는 기본적으로 IP:포트 2379에서 실행되며, API 서버가 이 주소를 참조하도록 구성.

2. 쿠버네티스 클러스터 배포 방법

  1. 스크래치 방식 (From Scratch)
    • Etcd 및 기타 바이너리를 수동으로 다운로드하여 설치.
    • 마스터 노드에 직접 설치 후 서비스를 구성.
    • 인증서(TLS) 생성 및 구성 필요.
  2. Kubeadm 도구 사용
    • Kubeadm이 Etcd를 자동으로 배포.
    • kube-system 네임스페이스에서 Etcd 포드로 실행됨.
    • Etcdctl 유틸리티를 이용해 Etcd 데이터베이스를 탐색 가능.

3. Etcd 데이터 구조

  • Etcd의 데이터는 특정 디렉터리 구조로 저장됨:
    • 루트 디렉터리: registry.
    • 하위 디렉터리: 노드, 포드, 복제본 세트, 배포 등.

4. 고가용성(High Availability) 설정

  • 고가용성 클러스터:
    • 여러 마스터 노드와 여러 Etcd 인스턴스가 존재.
    • Etcd 인스턴스들 간의 동기화 필요.
  • 초기 클러스터 설정 시 각 Etcd 인스턴스 간의 통신을 위한 매개변수 설정 필요.

5. TLS 인증서

  • Etcd와 클러스터 구성 시 TLS 인증서 사용 필수.
  • 이 강의에서는 TLS 인증서 생성 및 구성에 대한 추가 학습이 예정됨.

 


ETCDCTL 명령어 및 사용 방법 요약


ETCDCTL: ETCD와 상호작용하는 CLI 도구

  • ETCDCTL은 ETCD 서버와 상호작용할 수 있는 CLI 도구.
  • 지원하는 API 버전:
    • Version 2 (기본값).
    • Version 3.

API 버전별 명령어 차이점

  1. ETCDCTL API Version 2
    • 기본적으로 설정된 버전.
    • 주요 명령어:
      • etcdctl backup
      • etcdctl cluster-health
      • etcdctl mk
      • etcdctl mkdir
      • etcdctl set
  2. ETCDCTL API Version 3
    • 환경 변수로 설정 필요: export ETCDCTL_API=3
    • 주요 명령어:
      • etcdctl snapshot save
      • etcdctl endpoint health
      • etcdctl get
      • etcdctl put
  • API 버전이 설정되지 않으면 기본적으로 Version 2로 동작.
  • Version 3 명령어를 사용하려면 환경 변수 ETCDCTL_API를 3으로 설정해야 함.
  • 설정된 API 버전에 따라 다른 명령어를 사용해야 하며, 호환되지 않음.

인증서 파일 지정

  • ETCDCTL을 통해 ETCD API 서버와 통신하려면 인증서 파일 경로를 지정해야 함.
  • 인증서 파일 경로:
    • --cacert /etc/kubernetes/pki/etcd/ca.crt
    • --cert /etc/kubernetes/pki/etcd/server.crt
    • --key /etc/kubernetes/pki/etcd/server.key
  • 인증서는 ETCD의 보안을 유지하기 위해 필수이며, 이후 강의에서 자세히 다룸.

ETCDCTL 명령어 실행 예시

  • Version 3 API를 사용하여 데이터 조회:
     
kubectl exec etcd-master -n kube-system -- sh -c "ETCDCTL_API=3 etcdctl get / --prefix --keys-only --limit=10 --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/server.crt --key /etc/kubernetes/pki/etcd/server.key"

 

  • 해석:
    • ETCDCTL_API=3: API 버전을 Version 3으로 설정.
    • etcdctl get /: 루트 디렉터리부터 데이터를 가져옴.
    • --prefix: 접두사가 일치하는 모든 키를 검색.
    • --keys-only: 키만 출력.
    • --limit=10: 최대 10개의 결과만 출력.
    • --cacert, --cert, --key: 인증서 파일 경로 지정.

핵심 정리

  1. API 버전을 명확히 설정해야 함.
  2. 명령어 실행 시 인증서 파일 경로를 지정해야 함.
  3. API 버전과 명령어의 호환성을 이해하고 적절히 사용해야 함.
728x90