728x90
쿠버네티스 클러스터 구조
- Control Plane(Master Node)는 클러스터를 컨트롤하기 위한 기능들을 제공하며 클러스터 전역에 걸친 의사결정과 클러스터 이벤트 감지 및 응답을 함
- Worker Node는 컨테이너를 실행하고 네트워크를 설정하는 등 실제 유저가 사용하는 서비스를 관리함
Control Plane(Master Node) 구성
구성 종류 | 설명 |
kube-apiserver | 쿠버네티스 클러스터의 API 를 사용할 수 있또록 하는 컴포넌트 클러스터로 온 요청이 유효한지 검증함 |
etcd | 쿠버네티스에서 필요한 모든 데이터를 저장하는 데이터베이스 역할을 함 분산환경에서 설정관리, 서비스 디스커버리, 작업조율을 위한 데이터를 저장하는 분산 Key-value 저장소 |
kube-scheduler | 클러스터안의 자원 할당이 가능한 노드 중 적당한 노드를 선택하여 새로운 파드를 실행하도록 선정함 (파드의 실행 조건을 비교하여 최선의 노드를 선정) |
kube-controller-manager | 쿠버네티스의 파드들을 관리하는 컨트롤러를 구동하는 컴포넌트 |
cloud-controller-manager | 클라우드 플랫폼과 상호작용하는 컴포넌트 |
Worker Node 구성
구성 종류 | 설명 |
kubelet | 클러스터의 각 노드에서 실행되는 에이전트 정의된 파드 스펙을 받아서 컨테이너가 해당 파드 스펙에 따라 정상적으로 동작하도록 관리 |
kube-proxy | 클러스터의 각 노드에서 실행되는 가상 네트워크를 설정하고 관리하는 네트워크 프록시 쿠버네티스 서비스를 구현하는 컴포넌트로, 노드의 네트워크 규칙을 관리함 |
컨테이너 런타임 | 컨테이너 실행을 담당하는 소프트웨어 |
오브젝트 / 컨트롤러
쿠버네티스는 크게 오브젝트와 오브젝트를 관리하는 컨트롤러로 나뉨
- 오브젝트 : 파드, 서비스, 볼륨, 네임스페이스
- 컨트롤러 : 레플리카셋, 디플로이먼트, 스테이트 풀렛, 데몬셋, 잡
파드 생성 절차
kubectl을 이용하여 쿠버네티스를 관리하는데 실제로 kube-apiserver에서 제공하는 API를 사용함
- Kubectl로 create Pod API를 호출
- API Server는 요청이 유효한지를 검사하고 etcd에 저장
- etcd가 결과를 리턴
- API Server는 스케쥴러를 호출
- 스케쥴러는 Pod를 실행할 위치를 결정하고 리턴
- API Server는 Pod 실행 결과를 etcd에 기록
- etcd가 결과를 리턴
- API Server는 해당 노드에있는 Kubelet를 호출
- Kubelet는 Docker API를 이용해서 컨테이너를 생성
- Kubelet는 API를 호출해서 Pod 상태를 업데이트
- API 서버는 etcd의 상태를 유지
'KUBERNETES' 카테고리의 다른 글
[k8s] 명령어 정리 (0) | 2022.01.17 |
---|