본문 바로가기

따배쿠

따배쿠 4장 쿠버네티스 동작과정

728x90

쿠버네티스의 동작과정

  1. 개발자/운영자가 컨테이너들을 build한다
  2. build했던 이미지들을 도커 명령어로 hub에 올리기
  3. ( + 4 )쿠버네티스 명령어를 통해, 이 컨테이너가 실행될 수 있도록 요청
  4. master는 이 요청에 따라서, worker node들에게 해당 컨테이너를 배치
  • scheduler는, 어디가 적절할지 판단한 뒤 REST API server에게 최적의 노드를 알려줌
  1. 이 API는, 할당받은 node의 kubelet에게, 해당 컨테이너를 실행해줄것을 요청함
  2. 해당 node의 kubelet은, 도커 명령어로 변환한 뒤, 도커 데몬에게 실행할 것을 요청함.
  3. 도커 데몬은, hub에서 해당 image를 찾은 뒤 실제로 실행함.
  4. 쿠버네티스는, 이렇게 실행되게 된 container를 “pod”라는 단위로 관리함

 

master Node

etcd

  • key-value 타입의 저장소

kube-apiserver

  • k8s API를 사용하도록 요청을 받고 요청이 유효한지 검사

kube-scheduler

  • 파드를 실행할 노드 선택

kube-controller-manager

  • 파드를 관찰하며 개수를 보장

worker Node 

 

Kubelet

  • 모든 노드에서 실행되는 k8s 에이전트
  • 데몬 형태로 동작

kube-proxy

  • k8s의 network 동작을 관리
  • iptables rule을 구성

컨테이너 런타임

  • 컨테이너를 실행하는 엔진
  • docker, containerd,runc

 

 

1) API는 명령어를 받는다

2) etcd는 워커 노드들에 대한 상태 정보 & kubernetes 정보를 key:value 형태로 저장

3) API는, 들어온 명령을 받아서 scheduler에게 어디에 실행할지 물어봄. scheduler는 etcd 정보를 바탕으로, 판단한뒤 응답해줌

4) API는 응답받은 정보를 바탕으로 ( 어디에 실행할 지 ), 특정 node의 kubelet에게 특정 컨테이너를 실행해줄 것을 요청함

 

kubelete은 데몬이다. kubelet안에는 cAdvisor가 포함되어있음. 현재 컨테이너정보를 수집해서 마스터에게 

전달하는 역할을 함.그래서 이 정보들을 etcd에 저장함 etcd는 각 kubelet에 대한 상태정보를 가지고있음

 

5) kubelet은 직접 실행할 수 없음, 도커 명령어로 변환한뒤, 도커(데몬)에게 해당 요청을 전달해줌.

6) 도커 데몬은, hub에서 해당 image를 받아온 뒤, 해당 컨테이너를 실행함

7) 만약 노드2가 nginx를 가지고 있는데 다운되어버리면 controller는 잘 작동하는지 계속 확인하다가

정상적으로 작동을 안한다면 다시 api에게 노드2의 nginx 가 꺼졋으니까 다시 실행해줘 ! 라는 명령어를

날리게 한다. 즉 , 갯수를 보장시켜주는 것이 컨트롤러

 

 

네트워크 애드온

CNI:weave,calico,flaneld,kube-route

 

dns 애드온

coreDNS

 

대시보드 애드온

 

컨테이너 자원 모니터링

cAdvisor

 

클러스터 로깅

컨테이너 로그,k8s 운영 로그들을 수집해서 중앙화

ELK(ElasticSearch,Logstash,Kibana)

수집된 로그정제

정제된 결과를 UI ->Kibana

 

EFK(ElasticSearch,Fluentd,kibana)

 

DataDog(3개를 묶어서 한번에 보여줌) 

 

( 참고 : 따배쿠 https://www.youtube.com/watch?v=6n5obRKsCRQ&list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c )

 

728x90

'따배쿠' 카테고리의 다른 글

따배쿠 3장 kubectl 실습 및 pod 생성하기  (0) 2023.07.15