해당 내용은 Udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의를 공부한 내용입니다. 내용을 그대로 번역하기보다는, 제가 이해하기 쉬운 대로 수정한 부분들이 있습니다.
⚠️ 영어 독해가 많이 부족합니다. 틀린 내용이 있으면 알려주시면 감사하겠습니다.
이번 강의에서는 Kubernetes에서 etcd의 역할에 대해 알아보겠습니다.
ETCD Datastore
etcd는 클러스터에 대한 정보를 저장하는 데이터 저장소입니다. 어떤 정보들이 있을까요? Nodes
, PODS
, Configs
, Secrets
, Accounts
, Roles
, Role Bindings
등이 있습니다.
kube control get
명령을 실행할 때 우리가 볼 수 있는 정보는 모두 etcd 서버에서 가져온 것들입니다. 노드 추가, pod 나 replica sets 배포와 같은 클러스터에 대한 모든 변경사항들이 etcd서버에서 업데이트됩니다. etcd 서버에 딱 한 번만 업데이트 되는 것이 있는데 그것은 바로 complete하는 변경사항입니다.
클러스터를 어떻게 설정하느냐에 따라 etcd는 다르게 배포됩니다. 이 섹션 전체에서 두 가지 유형의 Kubernetes 배포에 대해 배울 것입니다.
- 하나는 scratch로부터의 배포
- 다른 하나는 Qadium 툴을 사용하여 배포하는 것입니다. 모의고사 환경에서는 Qadium 툴을 사용하여 배포합니다. 코스의 뒤 강의에서 클러스터를 설정하게 될 텐데, 이때 scratch로 설정(밑바닥부터 처음부터 설정)할 것입니다. 따라서 두 방법의 차이를 알아두면 좋습니다.
Setup - Manual
클러스터를 scratch 설정하는 경우, etcd바이너리를 직접 다운로드 하여 etcd를 deploy하고, 바이너리를 설치하여 etcd를 직접 마스터 노드에서 서비스로 구성합니다.
$ wget -q --https-only "https://github.com/etcd-io/etcd/releases/download/v3.3.11/etcd-v3.3.11-linux-amd64.tar.gz"
서비스에 전달되는 많은 옵션들이 있습니다. 그 중 다수는 인증서와 관련이 있습니다. 이 과정의 후반부에서 인증서를 어떻게 생성하고 구성하는지에 대해 자세히 알아보겠습니다. TLS 인증서에 대한 섹션이 따로 있습니다. 나머지는 etcd를 클러스터로 구성하는 것과 관련된 것들입니다.
Kubernetes에서 high availability를 설정할 때 해당 옵션들을 살펴보겠습니다. 지금 주목할 유일한 옵션은 advertised client URL입니다.
이것은 etcd가 대기(listens)하고 있는 주소입니다. 서버 ip와 2379포트로 구성되어 있는데, 2379포트는 etcd가 대기하는 디폴트 포트입니다. 이 URL은 kube API 서버에서 etcd 서버에 접근하려고 할 때 구성되어 있어야 합니다.
Setup - kubeadm
kubeadm을 사용하여 클러스터를 설정하는 경우, kubeadm이 etcd서버를 kube 시스템 네임스페이스 안의 파드로 배포합니다.
$ kubectl get pods -n kube-system
Explore ETCD
etcd 데이터베이스를 탐색할 수 있습니다. 이 파드 내에서 etcd control utility를 사용하여 etcd database를 탐색할 수 있습니다. Kubernetes에 저장된 모든 키를 나열하려면 다음과 같이 etcd control get 명령을 실행하면 됩니다.
etcdctl get / --prefix -keys-only
쿠버네티스는 특정 디렉토리 구조로 데이터를 저장합니다. 루트 디렉토리는 Registry이며 그 아래에 minions, pods, replicasets, deployments, roles, secrets 등 다양한 Kubernetes 구성이 있습니다.
ETCD in HA Environment
high availability 환경에서는 클러스터에 여러 마스터 노드가 있습니다. 그리고 마스터 노드들에 분산된 여러 etcd 인스턴스를 갖게 됩니다. 이때, etcd 서비스 구성에서 파라미터를 잘 설정하면 etcd 인스턴스가 서로에 대해 알게 됩니다. --initial-cluster
옵션에 etcd 서비스의 다른 인스턴스를 지정하면 됩니다. 이 과정의 뒷 부분에서 훨씬 더 자세히 high availability에 대해 이야기해보겠습니다만, 여기서 한번 포인트를 짚고 넘어가는 것이 좋다고 생각했습니다.
'MLOps > Doker & Kubernetes' 카테고리의 다른 글
Udemy CKA 강의 정리 15: ETCD - Kube-API Server (0) | 2023.01.01 |
---|---|
Udemy CKA 강의 정리 14: ETCD - Commands (Optional) (0) | 2023.01.01 |
Udemy CKA 강의 정리 12: ETCD for Beginners (0) | 2023.01.01 |
Udemy CKA 강의 정리 11: Cluster Architecture (0) | 2022.12.30 |
Udemy CKA 강의 정리 10: Download Presentation Deck for this section (0) | 2022.12.30 |
댓글