Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

Study_note

[Kubernetes] 쿠버네티스 구성요소, 동작 흐름 본문

Kubernetes

[Kubernetes] 쿠버네티스 구성요소, 동작 흐름

Study_note 2021. 11. 23. 00:41

 

쿠버 네티스란?

컨테이너 애플리케이션을 쉽게 배포하고 관리할 수 있게 해주는 소프트에어 시스템으로 여러 대의 노드를 마치 하나의 거대한 컴퓨터인 것처럼 클런스터링하여 애플리케이션을 실행한다 수 백대의 물리적인 호스트를 사용하는 기본 인프라를 추상화하여 개발 및 운영 팀의 개발 배포 관리를 산 순화시킨다 즉 단순한 컨테이너 플랫폼이 아닌 마이크로 서비스, 클라우드 플랫폼을 지향하고, 컨테이너로 이루어진 것들을 손쉽게 담고 관리할 수 있는 그릇 역할을 한다

 

즉 장점은

애플리케이션의 배포 단순화,  높은 하드웨어 활용도,   지속적인 상태 확인,   오토 스케일링이 있다

 

선언적 API

컨테이너가 어떤 상태이길 원하는지 쿠버 네티스에 설정하면 지속해서 컨테이너의 상태를 확인하여 설정한 상태가 아니라면 선언된 상태에 맞추기 위해 동작한다

  https://subicura.com/2019/05/19/kubernetes-basic-1.html

 

쿠버네티스 구성요소

 

마스터 노드 (kube-APIserver, kube-Scheduler, kube-controller-manager, etcd)

전반적으로는 노드들의 상태를 제어하고 수행하며 이벤트를 감지하는 역할을 한다 

  https://subicura.com/2019/05/19/kubernetes-basic-1.html

워커 노드 (kube-proxy, Kublet, pod)

kublet이라는 프로세스를 통해서 마스터 노드의 명령을 받아 컨테이너화 된 애플리케이션을 동작하고 유지시키는 역할을 한다

https://subicura.com/2019/05/19/kubernetes-basic-1.html

kubectl

워커 노드에서 마스터 노드와 통신하는 명령어로서 쿠버 네티스 api로 마스터 노드와 상호작용 한다

 

kube-APIserver

클러스터를 구성하는 컴포넌트와 모든 요청을 처리하는 역할

 

kube-Scheduler

클러스터 안의 자원 할당이 가능한 노드 중 적당한 노드를 선택하여 새로운 파드를 실행하도록 선정하는 작업

 

kube-controller-manager

쿠버 네티스의 파드들을 관리하는 컨트롤러를 구동하는 컴포넌트

 

kube-proxy

클러스트의 각 노드에서 실행되는 가상 네트워크를 설정하고 관리하는 네트워크 프락시

 

pod

컨테이너를 포함하는 단위로 가장 기본적인 배포 단위이다

 

etcd

쿠버 네티스에서 필요한 모든 데이터를 저장하는 데이터 베이스 역할을 한다.

 

 

쿠버네티스 클러스터의 기본 동작 흐름

https://has3ong.github.io/kubernetes-firststepwithdockerandkubernetes/

  1. 이미지를 빌드해 도커 허브에 푸시
  2. kubectl 명령어를 실행해 쿠버네티스 api 서버로 요청을 전달한다
  3. 컨트롤러가 새 pod를 생성하고 스케줄러가 워커 노드 중 하나에 스케줄링
  4. 스케줄링된 워커 노드의 kublet는 파드가 스케줄링된 걸 확인
  5. 이미지가 로컬에 없다면 레지스트리에서 이미지를 pull 하도록 지시
  6. 이미지 다운 후 도커는 컨테이너를 생성하고 실행

kublet 이용해 pod 생성 절차

  https://subicura.com/2019/05/19/kubernetes-basic-1.html

 

  1. kubectl로 api를 호출
  2. api는 요청이 유효한지 검사하고 etcd에 저장하고 etcd는 결과를 리턴한다
  3. api는 스케줄러를 호출하고 스케줄러는 pod을 실행할 위치를 결정하고 리턴한다
  4. api는 pod실행 결과를 etcd에 기록하고 etcd가 결과를 리턴한다
  5. api는 해당 노드에 있는 kubelet를 호출하고 kublet은 docker api를 사용해 컨테이너 생성한다
  6. kubelet는 api를 호출해서 pod 상태를 업데이트하고 etcd의 상태를 유지한다
Comments