4.1 쿠버네티스 클러스터의 전체 구조
쿠버네티스 클러스터는 크게 두 종류의 서버로 구성합니다. 클러스터를 관리하는 Master와 실제 컨테이너를 실행시키는 Worker입니다.
Master에는 etcd, kube-apiserver, kube-scheduler, kube-controller-manager, kubelet, kube-proxy, docker 등의 컴포넌트가 실행됩니다. 마스터는 보통 고가용성을 만족하고자 서버 3대 정도를 구성해서 운영합니다. 실제 리더 마스터는 1대고 나머지 2대는 대기를 합니다.
워커 노드에는 쿠블렛, 쿠베프록시, 도커 등의 컴포넌트가 실행됩니다. 실제 사용하는 컨테이너 대부분은 워커 노드에서 실행됩니다.
4.2 쿠버네티스 주요 컴포넌트
4.2.1 마스터용 컴포넌트
- etcd: 고가용성을 제공하는 Key-Value 저장소, 쿠버네티스에 필요한 모든 데이터를 저장하는 데이터베이스
- kube-apiserver: 쿠버네티스 클러스터의 API를 사용할 수 있도록 하는 컴포넌트, 클러스터로 온 요청이 유효한지 검증
- kube-scheduler: 클러스터 안에서 자원 할당이 가능한 노드 중 알맞은 노드를 선택하여 파드를 실행하는 역할
- kube-controller-manager: 파드를 관리하는 컨트롤러
- cloud-controller-manager: 쿠버네티스의 컨트롤러들을 클라우드 서비스와 연결해 관리하는 컴포넌트
4.2.2 워커용 컴포넌트
- kubelet: 클러스터 안 모든 노드에서 실행되는 에이전트로, 파드 컨테이너들의 실행을 직접 관리
- kube-proxy: 클러스터 안에 별도의 가상 네트워크를 설정하고 관리
- container-runtime: 컨테이너를 실제로 실행시키는 런타임. ex) docker
4.2.3 애드온
- DNS 애드온: 클러스터 안에서 동작하는 DNS서버
- 대시보드 애드온: 쿠버네티스 웹 UI 애드온
- 컨테이너 자원 모니터링: 컨테이너의 상태를 모니터링 하는 애드온
- 클러스터 로깅: 각 노드에서 로그를 수집하여 중앙 저장 파드로 로그를 수집
4.3 오브젝트와 컨트롤러
4.3.1 namespace
쿠버네티스 클러스터 내부를 논리적으로 분리하는 오브젝트, 클러스터 안에서 용도에 따라 실행해야 하는 앱을 구분할 때 사용합니다.
기본 네임 스페이스를 변경하는 명령어는 아래와 같습니다.
kubectl config set-context {컨텍스트 이름} --namespace={변경할 네임스페이스}
4.3.2 템플릿
오브젝트나 컨트롤러의 상태를 기술하는 YAML 형식의 템플릿을 쿠버네티스에서는 사용합니다.
필드에 대한 작성법은 책에 기술되어 있고 공식문서를 참조합시다
'Study > DevOps' 카테고리의 다른 글
3. 쿠버네티스로 컨테이너 실행하기 (0) | 2023.03.02 |
---|---|
1. 쿠버네티스 소개 (1) | 2023.02.16 |