티스토리 뷰

독후감

Chap11-13. ETCD

killog 2022. 3. 7. 00:53
반응형

Basic in Kubernetes

  • what is ETCD?
    • ETCD 는 간단하고, 안전하며, 빠른, 분산 안정적 키값 저장소입니다.
  • what is key-value store?
    • 중복 값을 가질 수 없다.
  • how to get started quickly?
    # 1. download 
    curl -L https://github.com/etcd-io/etcd/releases/download/v3.3.11/etcd- v3.3.11-linux-amd64.tar.gz -o etcd-v3.3.11-linux-amd64.tar.gz 
    # 2. extract 
    tar xzcf etcd-v3.3.11-linux-amd64.tar.gz (안깔리길레 brew install etcd)
    # 3. run ETCD Service 
    ./etcd
  • how to operate ETCD?
# 4. operate ETCD
$etcdctl set key1 value1
$etcdctl put key1 value1
(etcdctl= etcd 용 cli)

$etcdctl get key1
(base) ➜  20220228 git:(master) ✗ etcdctl get key1
key1
value1


$etcdctl
# 다양한 헬프문구 나옴.

ETCD in Kubernetes

  • 쿠버네티스에서 ETCD는 cluster를 저장한다.
    • nodes
    • configs
    • secrets
    • accounts
    • roles
    • bindings
    • ..
  • kubectl get 명령을 실행할때, 표시되는 모든 정보들은 ETCD 서버에서 가져오는 것이다.
  • 노드 추가, pods 배포, replicaset update와 같은 클러스터에 수행하는 변경작업은 ETCD 에 업데이트 된다.
  • ETCD 서버에 업데이트가 된 이후에만 변경이된 것으로 간주된다.
  • 클러스터를 설정하는 방법에 따라, ETCD가 다르게 배포된다.
  • 이 섹션 전체에서 우리는 2가지 유형의 Kubernetes 배포에 대해 설명합니다.
    • 손수 배포
    • 하나는 kubeadm tool 을 이용한 배포

2가지 유형의 Kubernetes 배포

  • 손수 배포
    • etcd를 직접 다운로드해서 ETCD를 배포한다.
    • 바이너리를 설치하고, 마스터노드에 서비스로 ETCD를 구성한다.
      • 서비스에 전달되는 옵션 중 다수는 인증서와 관련이 있다.
    • advertise-client-urls :
      • 만약에 우리가 고가용성(HA) 쿠베를 설정할때, 내가 신경써야하는 유일한 옵션
      • 이것은 ETCD 가 수신하는 주소이다.
      • 이것은 서버의 ip 와 포트가 있다.
      • 2379: etcd 가 listen 하는 기본 포트이다.
      • kube-apiserver 가 etcd 서버에 접속을 시도할때, 설정해야하는 Url 이다.
  • kubeadm 배포
    • kubeadme를 이용해 클러스터를 설정하는 경우, kubeadm 는 ETCD 서버를 kube-system namespace 내, POD 로 배포한다.
      • kubectl 이용해서 etcd 데이터베이스를 탐색 가능하다.
      • 쿠버네티스는 데이터를 특정 디렉토리 구조로 저장한다.
        • root directory 는 registry 이고, 그 아래에는, 다양한 쿠버네티스 구성요소를 볼 수 있다.
          • 다양한 쿠버네티스 구성요소
            • minions
            • nodes
            • pods
            • replicasets
            • deployments
            • roles
            • secrets
  • #kubeadm 는 ETCD 서버를 kube-system namespace 내, POD 로 배포한다.
    kubetctl get pods -n kube-sytem
  • # 쿠베에 저장된 모든 키를 나열하려면,  다음과 같이 명령어를 실행하시오.
    kubectl exec etcd-master -n kube-system etcdctl get / ---prefix -keys-only
    # root directory 는 `registry` 이고, 그 아래에는, 다양한 쿠버네티스 구성
  •  

 

 

 

ETCD in HA Environment

  • 고가용성 환경(HA Environment, High Availability Environment)에서는 클러스터에 여러 마스터 노드가 있습니다.
  • 여러 ETCD 인스턴스가 마스터 노드에 분산됩니다.![image-20220304223502928](/Users/giljaeeun/Library/Application Support/typora-user-images/image-20220304223502928.png)
  • 이 경우, etcd Service Configuration 에 올바른 매개변수를 지정하여,etcd 인스턴스를 분별해야한다.
    • "initial-cluster"은 ETCD 서비스의 여러 인스턴스를 지정해야 하는 부분이다.
      • controller-0, controller-1 이렇게 구분자로 구별되는 것이 보임.
    • --initial-cluster controller-0=https://${CONTROLLER0_IP}:2380,controller-1=https://${CONTROLLER1_IP}:2380

 

 

 

ETCD - Commands (Optional)

  • (Optional) Additional information about ETCDCTL Utility
  • ETCDCTL 은 ETCD 와 통신하기 위한 cli 이다.
  • 버전2, ,버전3이 있는데,, 버전2가 default . 둘이 서로 다른 command 이용
    • API 버전 세팅
    •  
    • export ETCDCTL_API=3
  • 버전2
etcdtl backup
etcdctl cluster-health
etcdctl mk
etcdctl mkdir
etcdctl set
  • 버전3
etcdctl snapshot save
etcdctl endpoint health
etcdctl get
etcdctl put
  • 또한, 너는 ETCD APIserver에 ETCDCTL을 인증하기 위해, 무조건 certificate 해야한다.
    • certificate files 는 etcd-master 해당 path 에 있다.
    • --cacert /etc/kubernetes/pki/etcd/ca.crt
      --cert /etc/kubernetes/pki/etcd/server.crt
      --key /etc/kubernetes/pki/etcd/server.key
  • 그러므로, etcd master 을 수행할 때, 너는 반드시 버전이랑, certification 을 해야한다.
    • 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"
반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함