KUBERNETES

[k8s] 아키텍처 및 동작

집한구석 2022. 1. 17. 22:19
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를 사용함

  1. Kubectl로 create Pod API를 호출
  2. API Server는 요청이 유효한지를 검사하고 etcd에 저장
  3. etcd가 결과를 리턴
  4. API Server는 스케쥴러를 호출
  5. 스케쥴러는 Pod를 실행할 위치를 결정하고 리턴
  6. API Server는 Pod 실행 결과를 etcd에 기록
  7. etcd가 결과를 리턴
  8. API Server는 해당 노드에있는 Kubelet를 호출
  9. Kubelet는 Docker API를 이용해서 컨테이너를 생성
  10. Kubelet는 API를 호출해서 Pod 상태를 업데이트
  11. API 서버는 etcd의 상태를 유지

'KUBERNETES' 카테고리의 다른 글

[k8s] 명령어 정리  (0) 2022.01.17