본문 바로가기
MLOps/Doker & Kubernetes

Udemy CKA 강의 정리 12: ETCD for Beginners

by 공부하는 무니 2023. 1. 1.
반응형

해당 내용은 Udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests  강의를 공부한 내용입니다. 내용을 그대로 번역하기보다는, 제가 이해하기 쉬운 대로 수정한 부분들이 있습니다.

⚠️ 영어 독해가 많이 부족합니다. 틀린 내용이 있으면 알려주시면 감사하겠습니다.


이번 강의에서는 초보자를 위한 ETCD에 대한 간단한 소개를 해보겠습니다. ETCD에 이미 알고 계시다면, 이 강의를 건너 뛰셔도 됩니다.

Objectives

이번 과정에서는 아래 내용과 같이 ETCD에대한 기본적인 소개를 하도록 하겠습니다.

  • What is ETCD?
  • What is a Key-Value Store?
  • How to get started quickly with ETCD?
  • How to operate ETCD?

 

이 과정의 뒷부분에서 high availability(고가용성)에 대해 배울 때, 아래 내용에 대해 다루겠습니다.

  • What is a distributed system?
  • How ETCD Operates
  • RAFT Protocol
  • Best practices on number of nodes

ETCD

그래서 ETCD는 무엇일까요? ETCD는 간단하고 안전하고 빠른, 신뢰할 수 있는 key-value store 입니다. 이 문장을 찬찬히 뜯어 봅시다.

전통적인 데이터베이스

전통적인 데이터베이스는 표 형식입니다. SQL 혹은 데이터를 행과 열의 형태로 저장하는 관계형 데이터베이스에 대해 들어 보셨을 것입니다. 아래 표를 예로 들어 보겠습니다.

표에는 몇몇 사람들에 대한 정보가 저장되어 있습니다. 행은 각 사람을 나타냅니다. 열은 저장되는 정보의 유형을 나타냅니다. 이제 우리는 여기에 추가 정보를 추가하고 싶습니다. 예를 들어 급여 정보를 추가하고 싶으면, 우리는 열을 하나 추가하고 급여정보를 채워 넣습니다. 표에 있는 모든 사람들이 일을 하지는 않기 때문에 급여 정보는 비어 있을 수 있습니다. 급여 정보 말고 성적 정보도 추가하고 싶습니다. 따라서 새 열을 추가하고, 학생인 사람들의 성적 정보를 채워 넣습니다.

이렇게 새로운 정보를 추가해야 할 때마다 테이블 전체가 영향을 받고, 빈 셀도 많아집니다.

key-value store

key-value store는 문서 또는 페이지의 형태로 정보를 저장합니다. 위에서 다룬 사람들의 정보를 key-value store로 표현한다면, 각 개인의 정보는 하나의 파일에 있는 문서에 저장됩니다.

이러한 파일은 어떤 형식이나 구조이든지 상관없습니다. key-value 저장방식을 사용하면, 한 파일을 변경해도 다른 파일에는 영향을 미치지 않습니다. 일하는 사람의 파일에는 급여 필드가 있으며, 학생의 파일에는 성적 필드가 있습니다. 각 파일에 다른 정보를 추가할 수 있습니다. 이때 전통적인 데이터베이스와는 달리 해당 파일만 변경되고 다른 파일은 업데이트되지 않습니다. 간단한 키와 값을 저장하고 검색할 수 있지만 데이터가 복잡해지면 일반적으로 JSON 또는 YANO 와 같은 데이터 형식을 사용하는 것이 좋습니다.

Install ETCD

ETCD를 설치하고 시작하는 것은 간단합니다. 1) binary를 다운로드하고 2) 압축을 푼 다음 3)실행하면 됩니다.

  1. Github 릴리스 페이지에서 운영 체제에 맞는 관련 바이너리를 다운로드 합니다.
  1. 압축을 풉니다.
  1. ETCD Service를 실행합니다.

Operate ETCD

ETCD를 실행하면 default값인 2379 포트에서 대기하던 서비스가 시작됩니다.

이제 우리는 정보를 저장하고 검색하기 위해 ETCD 서비스에 대한 모든 클라이언트에 연결할 수 있습니다. ETCD와 함께 제공되는 기본 클라이언트는 ETCD control client입니다. ETCD control client는 command line client입니다. 이를 사용해서 key-value pair를 저장하고 검색할 수 있습니다.

key-value pair를 저장하려면 etcdtl set key1 value1 명령을 실행하면 됩니다. 이렇게 하면 데이터베이스에 해당 정보가 저장됩니다.

저장된 데이터를 검색하려면, etcdctl get key1 명령을 실행하면 됩니다.

더 많은 옵션을 보려면 그냥 etcdctl 명령을 실행하면 됩니다.

ETCD Versions

ETCD를 공부하거나 다른 온라인 문서들에서 다른 버전을 접할 수 있습니다. 따라서 ETCD 릴리즈의 히스토리를 이해하는 것이 중요하며 이를 통해 어떤 것이 언제 변경되었는지 알 수 있습니다.

v0.1 Aug 2013  
v0.5 Dec 2014  
v2.0 Feb 2015  
v3.1 Jan 2017  
  Nov 2018 CNCF Incubation
  • ETCD v0.1은 2013년 8월에 출시되었습니다.
  • official stable version인 v2.0은 2015년 2월에 출시되었으며 이때 RAFT 합의 알고리즘이 재설계되어 지원되었습니다.
  • v3.1 은 2017년 1월에 출시되었습니다. 훨씬 더 많은 최적화와 성능 향상을 제공했습니다.
  • 2018년 11월, ETCD프로젝트가 CNCF에서 incubated 되었습니다. 여기서 중요한 것은 v2와 v3 사이의 변경사항입니다. 이에 따라 API 버전도 v2에서 v3사이에 변경되었습니다. 이것은 etcdctl 명령어도 변경되었음을 의미합니다. 아까 보여드린 set, get 명령어는 v2용이었고, 하나는 v3용이었습니다(?) 우리의 etcdctl 커맨드는 v2와 v3를 동시에 사용한 것입니다. (이미지) 현재 구성되어있는 etcdctl의 버전은 어떻게 확인할까요? 아래 명령어로 확인합니다.

./etcdctl --version

실행하면 etcdctl과 api 버전을 확인할 수 있습니다. 여기서 그냥 옵션 없이 ./etcdctl 커맨드를 실행하면 지원하는 모든 명령들을 보여줍니다.

API v3에서 작동하도록 etcdctl을 변경하려면 아래와 같이 각 커맨드 마다 ETCDCTL_API=3 환경 변수를 설정하거나,

ETCDCTL_ALI=3 ./etcdctl version

아래와 같이export명령어로 전체 세션에 대해 환경변수를 내보낼 수 있습니다. 이렇게 하면 명령어마다 환경 변수를 설정하지 않아도 됩니다.

export ETCDCTL_API=3 ./etcdctl version

v2에서는 버전을 ./etcdctl --version로 확인했었는데요. --version이 옵션이었습니다. 그런데 v3에서는 버전 확인을 ./etcdctl version로 합니다. 이제 version은 옵션이 아니라 커맨드입니다. etcdctl 명령을 실행하면 이제는 API v3에서 지원하는 모든 명령들을 보여줍니다.

./etcdctl

 

 

반응형

댓글