전공공부
[K8S - CKA] Designing Cluster 본문
1. K8S 구성 고려
- 테스트 인지 검증용인지 운영용인지 등에 따라서 다른 성격의 셋팅이 필요합니다.
Education 목적
- Minikube
- Single Node cluster with GCP
Devlopment 목적
- MultiNode with Single Master and Multiple Workers가 될 수 있습니다.
Hosting Production Applications
- 고가용성 보장이 되는 멀티 노드 클러스터 멀티 마스터 노드로 셋팅을 해야 합니다.
- GCP로 만들게되면 알아서 노드 수를 맞춰주고 맞는 크기의 코어 및 메모리 셋팅을 합니다.
Cloud or OnPremise
- GKE for GCP
- Kubeadm으로 직접 배포
Nodes
- Controleplan에는 절대로 Worker Node처럼 사용을 하지 않아야 합니다.
- Master와 ETCD를 분리하는 식으로 완전한 분리를 구성 할 수 있습니다.
2. 쿠버네티스의 인프라스트럭쳐 관리
로컬 머신에서 만든다면 Linux를 쓸 것이고 kubeadm을 쓸 가능성이 높죠
Window를 쓴다면 VM을 지원하는 VM Host 등을 쓸 것이죠.
사실 위의 방법으로 로컬 머신에 구성해서 쿠버네티스를 체험하기는 어렵습니다. 로컬 머신에서 쓰려면 Minikube가 좋은 예시가 될 수 있습니다.
KUBEADM은 호스트나 VM이 필요하기 때문에 필요 없습니다.
Turnkey Solutions
- VM 관리를 직접 해야 함
VirtualBox 등등
Hosted Solutions
- KaaS 쿠버네티스 에즈어 서비스임
GKE, EKS, OSO ,Azura Kubernetis Service 등이 있음
참고로 쿠버네티스의 마스터 노드는 Active Active on Mode 임
허나 실제 안에서 돌아가는 Kube-controller-manger 등은 Active Standby 임 그래서 만일 요청이 들어오면 하나는 lock을 걸고 하나는 lock을 푸는 식으로 적용이 됨
Stacked Topology
External ETCD Topology
3. ETCD In HA
ETCD는 Key-Value Store 방식의 저장소입니다. 분산 방식과 일관성 방식이 있는데 READ는 우선 그냥 어떤 노드에서나 읽으면 됩니다. 하지만, WRITE는 어떻게 해야 할까요? 하나는 John이라는 데이터를 쓰고 하나는 Joe 라는 데이터를 쓴다고 해봅시다.
그러면 한 노드로 부터 들어온 값은 어떻게 관리가 될까요? ETCD의 Leader 노드가 쓰기 요청을 받아서 이를 복사해서 각각의 ETCD로 분산해줍니다.
그러면 ETCD의 Leader 선출 방식에 대해서 알아봅시다.
RAFT 알고리즘을 사용합니다.
상세하게는 알아보지 말고 만일, 한 노드가 삭제가 된다면 클러스터의 ETCD가 하나가 사라져도 가지고 있던 값을 줍니다.
Quorum = N/2 + 1이라는 공식이 나오는데 강의에서 나오는 이유는 Odd Number of Master 노드가 더 Network Failure가 적다는 것을 알려주기 위함입니다.
이게 뭐냐면... ETCD 가용성을 높이기 위해서는 아까 중간의 Network Fail이 떠서 다른 노드가 죽은 경우를 가정했을때 Quorum = N/2 + 1을 사용한다고 하였죠. 우리가 Node를 만들고 운영하면서 특정 노드 이상이 죽었을때를 에러의 경우로 판단합니다. 위 케이스라면 3개 노드를 쓰면 2.5가 값이 나오고 만일, 1개 Fail이 뜨면 봐줄만한 수치로 보여집니다.
만일, 2 노드에서는 어떨까요? 2/2 + 1 = 2가 나오고 이는 2 Node 2 Success Node가 필요하다는 말로 무조건 실패하는 케이스입니다.
4라면요? 4/2 + 1 = 3으로 1개의 Fail을 견디고 5라면 5/2 + 1 = 3.5 으로 1.5 -> 2 의 Fail을 견뎌냅니다.
따라서 아래 그림과 같이 Master Node 구성시 홀수 배치를 권장합니다.
ETCDCTL 사용법
export ETCDCTL_API=3
etcdctl put name john
etcdctl get name
출력문 : john
[여담]
추천하는 방식은 우선 Minikube를 통해서 손 쉽게 설치 한 후 쿠버네티스의 다양한 명령어를 먼저 접하는 것이 좋을 것 같다. 위의 것들은 실제 Kubeadm 또는 Hardway를 통한 K8S 설치 및 구성을 할 때 고려 해야 할 다양한 문제이다.
'Study > K8S' 카테고리의 다른 글
[CKAD] 자격증 후기 (0) | 2024.04.21 |
---|---|
[K8S - CKA] Ingress (0) | 2024.02.20 |
[K8S - CKA] DNS in K8S (0) | 2024.02.15 |
[K8S - CKA] Service Networking (1) | 2024.02.15 |
[K8S] SidecarContainer가 존재하는 Pod의 HPA 적용기 (1) | 2024.01.27 |