232-241
클러스터의 목적이 중요
• Purpose
Education -> Minikube single node cluster with kubeadm/gcp/aws
Development & Testing -> multi node, single master and multiplel work
Hosting Production Applications
다중 마스터와 다중 워커
최대 5000노드
최대 150,000파드
최대 300,0000 컨테이너
최대 100 파드 노드당
• Cloud or OnPrem? -> kubeadm, gke, EKS, AKS
고서능 -> SSD 스토리지
노드는 물리적 가상화 둘 다 가능
• Workloads
How many?
What kind?
• Web
• Big Data/Analytics
• Application Resource Requirements
CPU Intensive
•Memory Intensive
• Traffic
Heavy traffic
Burst Traffic
etcd를 따로 분리할 수 도 있음
window 원래 바이너리 없어서 안됨 -> Minikube
Minikube -> VM 생성 kubeadm -> VM 미리 필요함
Turnkey Solutions -> VM을 프로비전 -> OpenShift, Cloud Foundry Container Runtime, VMware Cloud PKS, Vagrant
Hosted Solutions -> 관리형 서비스-> GKE, OpenShift Online, AKS, EKS..
Virtual Box
마스터 노드가 사라져도 어플리캐이션은 작동 함-> 파드가 고장 나면 복구 불가능
api server active-active 모드로 실행중 -> 로드밸런서를 가지는 게 좋음 마스터 노드 앞에
컨트롤러 매니저 -> 인스턴스 병렬로 실행하면 중복으로 실행되어 파드를 만들수 있음 스케쥴러도 마찬가지 -> Atcive Standby로 가야함 -> leader elect -> leader elect lease duration 기본 설정은 15s 15s 간 잠금 장치
leader elect renew duration 10s 시간마다 리더 를 갱신
leader elect retry period 2s 마다 리더가 되려고 시도
-> 첫 번째 마스터가 죽어도 두번째 마스터가 로그를 받아서 역할을 할 수 있도록
etcd 분산 시스템 -> 어떤 etcd에 접근해도 데이터 접근 가능
노드개수와 RAFT
distributed 여러서버에 걸쳐 db설정 가능 동일한 복사본 가지고 있음
데이터가 일관적인지 확인 하는법은?
모든 etcd R/W 되도록 보장
READ는 쉬움
Write? 2개의 요청이 다르게 온다면 어떤게 통과? 사실 노드마다 쓰기 처리는 하지않음 -> 한 노드가 맡아서 -> 전체중 하나는 리더가 됨 => 리더 쓰기작업 -> 복사본 보냄
리더의 동의를 얻어야 클러스터 완성
무작위 타이머 맞춰 시간 보냄 타이머를 먼저 완료하는 사람이 노드에 리더가 될 권한 요청
다른 노드가 투표를 요청해 답변 맏으면 리더 역할을 맞춤
정기적으로 공지를 보내 자기가 리더라고 알림
리더로부터 알람 받지 못하는 경우 (노드 죽거나 네트워크 단절) -> 재선 프로세스 확인함
과반수 이상 복사본을 받아야 정상적 완료로 판단 3 -> 2대 살아야함
Quorum = N/2+1
노드 3개면 1대죽어도 OK 5대면 2대죽어도 OK
홀수를 선택해야 함
노드가 6개라면 네트워크때문에 분리되면
1번 노드 4개 2번노드 2개 ok
노드 3개 3개 되는 경우 쿼럼 4개여야해서 실패한 클러스터로 끝남
7명이라면 4-3으로 나누어져서 OK
initial cluster peer 별도 서비스가 이걸 통해 클러스터의 이루와 피어가 어디 있는ㄴ지 확인
HA에서 필요한 최소노드는 3대