- 아키텍처 이해: 컨트롤 플레인, 워커노드
- 쿠버네티스 컴포넌트의 분산 특성(nature)
- kubectl get componentstatuses
- 컴포넌트와 커뮤니케이션하는 방법: API 서버
- 개별 컴포넌트의 다수의 인스턴스 실행
- 컴포넌트의 실행 방법: 시스템에 직접 배포 또는 포드로서 실행
- 쿠버네티스가 etcd를 사용하는 방법
- etcd는 쿠버네티스가 클러스터 상태 및 메타 데이터를 저장하는 유일한 장소
- 낙관적 동시성 제어 (낙관적 locking): 버전 번호 + 업데이트 시간
- etcd에 리소스를 저장하는 방법: etcdctl ls /registry
- 지정된 오브젝트의 일관성과 유효성 보장
- etcd가 클러스터가 될 때 일관성 보장: RAFT 합의 알고리즘
- etcd 인스턴스의 개수가 홀수여야 하는 이유: 쿼럼(quorum) 효율성을 위해
- API 서버가 하는 일
- 인증 플러그인을 사용하는 클라이언트 인증
- 권한 승인 플러그인을 통한 클라이언트 승인
- 승인 제어 플러그인을 통해 요청 받은 리소스를 확인/수정
- 리소스 검증 및 영구 저장
- API 서버가 클라이언트의 리소스 변화를 감지하는 방법: 오브젝트를 갱신하면 포드의 변경 사항을 etcd에 저장했다가 그 순간 포드를 감시하는 모든 클라이언트에 전달
- 스케줄러 이해
- 기본 스케쥴러 알고리즘: 우선순위 + 라운드 로빈
- 수용 가능한 노드 찾기
- 포드를 위한 최적의 노드 선택
- 고급 포드 스케쥴링: 16장
- 다중 스케쥴러 사용
- 기본 스케쥴러 알고리즘: 우선순위 + 라운드 로빈
- 컨트롤러 매니저에서 실행되고 있는 컨트롤러 소개
- 컨트롤러가 하는 일과 동작 방식: 감시 메커니즘을 사용해 변경 사항을 통지
- 레플리케이션 매니저: API 서버를 통해 레플리케이션 컨트롤러를 감시하여 포드 레소스를 생성 및 삭제
- 레플리카셋, 데몬셋, 잡 컨트롤러: 거의 동일
- 디플로이먼트 컨트롤러
- 스테이트풀셋 컨트롤러
- 노드 컨트롤러
- 서비스 컨트롤러
- 엔드포인트 컨트롤러
- 네임스페이스 컨트롤러
- PersistentVolume 컨트롤러
- 컨트롤러 정리: 모든 컨트롤러는 API 서버를 통해 동작한다. 직접 통신하거나 명령하지 않는다.
- Kubelet이 하는 일
- Kubelet의 잡이해
- API 서버 없이 정적 포드 실행
- 쿠버네티스 서비스 프록시의 역할: 프록시로 불리는 이유
- 쿠버네티스 애드온 소개
- 애드온의 배포 방식
- DNS 서버의 동작 원리
- 대다수 인그레스 컨트롤러의 동작 방식
- 그 밖의 애드온 사용
- 모두 함께 가져오기
- 쿠버네티스 컴포넌트의 분산 특성(nature)
- 컨트롤러의 상호 협력 방식
- 관련된 컴포넌트의 이해
- 이벤트 체인
- 레플리카셋을 생성하는 배포 컨트롤러
- 포드 리소스를 생성하는 레플리카셋 컨트롤러
- 새롭게 생성된 포드를 노드에 할당하는 스케줄러
- 포드의 컨테이너를 실행하는 Kubelet
- 클러스터 이벤트 관찰: kubectl get events –watch
- 실행 중인 포드의 이해: 포드 인프라 컨테이너 + 컨테이너 A, B …
- 인터-포드 네트워킹
- 네트워크는 어떤 모습이어야 하는가
- 네트워크의 동작 원리 깊이 알아보기
- 동일한 노드상의 포드 간의 통신 활성화
- 서로 다른 노드상의 포드와의 통신 활성화
- 컨테이너 네트워크 인터페이스 소개
- 서비스의 구현 방식
- kube-proxy 소개
- kube-proxy가 iptables를 사용하는 방식
- 고가용성 클러스터 실행
- 앱의 가용성 높이기
- 가동 중단 시간을 줄이는 여러 가지 실행 방법
- 수평 확장이 불가능한 애플리케이션을 위한 리더 선출 매커니즘 사용하기
- 쿠버네티스 컨트롤 플레인 컴포넌트의 가용성 높이기
- etcd 클러스터 실행
- API 서버의 여러 인스턴스 실행
- 컨트롤러와 스케줄러의 고가용성 확보
- 컨트롤 플레인 컴포넌트에 사용된 리더 선출 메커니즘 이해
- 앱의 가용성 높이기
- 요약
- 쿠버네티스 클러스터를 구성하는 컴포넌트와 각 컴포넌트가 책임지는 컴포넌트
- API 서버, 스케줄러, 컨트롤러 매니저에서 실행 중인 다양한 컨트롤러와 Kubelet이 함께 작동해 포드를 생생하게 유지하는 방법
- 인프라 컨테이너가 포드의 모든 컨테이너를 묶는 방법
- 포드가 네트워크 브릿지를 통해 같은 노드에서 실행 중인 다른 포드와 통신하는 방법과 다른 노드의 브릿지가 서로 다른 노드에서 연결되는 방식으로 서로 다른 노드에서 실행되는 포드가 서로 통신하게 할 수 있는 방법
- kube-proxy가 노드에서 iptables 규칙을 구성해 동일한 서 비스의 포드 간에 로드 밸런싱을 수행하는 방법
- 컨트롤 플레인의 각 컴포넌트를 여러 인스턴스로 실행해 클러스터의 가용성을 높이는 방법