[kubernetes] CKA 대비 정리 1

김동완 (Joseph Kim)·2023년 5월 24일
3

CKA

목록 보기
1/1
post-thumbnail

개요

CKA 공부를 하며 필요한 내용을 간단히 정리할 예정

1. ETCD

key-value 형식으로 저장하는 DB.
2379 Port 사용.
version3 사용.

2. kubelet

클러스터의 각 노드에서 실행되는 에이전트.
kube-api 서버의 명령을 듣고 노드에서 컨테이너를 배포하거나 지운다.
kube-api 서버는 주기적으로 kubelet으로부터 상태를 보고 받는다.

3. Control Plane

ETCD

클러스터의 정보 저장.

Kube-API-Server

클러스터 내 모든 작업 관장.

Kube-Controller-manager

노드 / replica 컨트롤러 관장.

Kube-Scheduler

노드에 스케줄링 담당.

4. Worker Node

kubelet

API 서버의 지시를 듣고 컨테이너와 kube-proxy 관리.

kube-proxy

클러스터 내부에서 통신이 가능하게 함.

5. crictl

crictl 커맨드는 모든 container runtime에서 사용 가능하다.

6. Pod 생성 과정

  1. API가 ETCD에 정보 전달(Pod 생성에 대한)
  2. Scheduler가 API 모니터링. 새로운 파드가 스케줄링 되지 않음을 인식.
  3. Scheduler가 어느 노드에 파드를 생성할지 정하고 API와 통신.
  4. API가 ETCD에 정보 업데이트
  5. API가 새로운 정보를 Worker노드의 kubelet에 전달.
  6. kubelet이 Pod를 생성하고 Container Runtime에 컨테이너 생성을 명령.
  7. 이미지 배포
  8. kubelet은 상태를 API로 전달.
  9. API는 ETCD에 상태 업데이트

7. Kube-API의 역할

  • 요청의 인증과 유효성 검사
  • update된 data를 ETCD에 저장
  • ETCD와 통신하는 유일한 리소스
  • Scheduler, Controller, Kubelet과 통신

8. Controller의 역할

Node Controller

  • 노드의 상태를 파악.
  • 노드의 응용프로그램이 계속 실행될 수 있도록 함. (kube-api서버를 통해)
  • node monitor period는 기본 5초,
    node monitor grace period는 기본 40초,
    node eviction time은 기본 5분.

Replication Controller

  • 원하는 수의 Pod가 Cluster 내에서 항상 사용 가능하도록 함.

그 외 Deployment Controller, Namespace Controller 등 다양한 Controller가 존재한다.

이 모든걸 Controller manager라는 프로세스로 패키징 되어 있다.

9. Scheduller의 역할

  • Pod를 어떤 Node로 할당할지 결정.
  • 실제로 Pod를 Node에 띄우는건 아니다. (kubelet의 역할)

스케줄링 과정

  1. 해당 Pod가 뜨기 알맞지 않은 Node를 걸러낸다.
    ex) resource가 필요한 것 보다 부족한 Node

  2. 가능한 Node 중 Pod를 띄운 후 여유가 더 많은 Node를 선택해 할당한다.
    이 과정에서 resource limit / request, taints /tolerations, node selector/ affinity등을 고려.

10. kubelet의 역할

  • Worker 노드를 클러스터에 등록
  • Container 생성
  • Pod와 Container를 모니터링하고 API서버에 보고.
profile
Kubernetes / DevOps / Git / Network / AWS / Terraform / Opensource / Java / Springboot

1개의 댓글

comment-user-thumbnail
2023년 5월 30일

화이팅입니닷

답글 달기