빅토리 코딩
article thumbnail
728x90
반응형

개요

yaml 수정 및 생성 시 kubernetes안에서 일어나는 프로세스에 대해 알아본다.

yaml 수정시 보통 쓰는 apply 명령어를 썼을 때를 기준으로 본다.

1. 'kubectl apply' 명령은 원하는 Kubernetes 리소스 상태가 포함된 YAML 파일을 Kubernetes API 서버로 보낸다.
2. Kubernetes API 서버는 YAML 파일을 수신하고 파일에 지정된 리소스의 내부 표현을 생성한다.
3. 그런 다음 Kubernetes API 서버는 원하는 리소스 상태를 Kubernetes 컨트롤러 관리자 및 Kubernetes 스케줄러에 전달한다.
4. Kubernetes 스케줄러는 포드의 리소스 요구 사항과 각 노드에서 사용 가능한 리소스를 기반으로 새 포드 또는 업데이트된 포드를 클러스터의 노드에 할당한다.
5. Kubernetes 컨트롤러 관리자는 포드의 상태를 지속적으로 모니터링하고 원하는 상태가 유지되는지 확인합니다. 포드가 다운되거나 응답하지 않으면 컨트롤러 관리자가 포드를 다시 시작하거나 새 포드를 생성하여 원하는 복제본 수를 유지한다.
6. YAML 파일에 'Service' 리소스가 포함된 경우 API 서버는 업데이트되거나 생성된 리소스와 일치하도록 해당 Kubernetes 서비스를 생성하거나 업데이트한다.
7. 쿠버네티스 API 서버는 내부 표현에서 생성되거나 업데이트된 리소스의 상태를 업데이트하고 이 정보는 'kubectl'과 같은 다른 쿠버네티스 구성 요소 및 도구에서 사용할 수 있다.

그림으로 다시설명하

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

1. ReplicaSet 명세를 yml파일로 정의하고 kubectl 도구를 이용하여 API Server에 명령을 전달

2. Kube Controller에 포함된 ReplicaSet Controller가 ReplicaSet을 감시하다가 ReplicaSet에 정의된 Label Selector 조건을 만족하는 Pod이 존재하는지 체크

3. 해당하는 Label의 Pod이 없으면 ReplicaSet의 Pod 템플릿을 보고 새로운 Pod(no assign)을 생성. 생성은 역시 API Server에 전달하고 API Server는 etcd에 저장

4. Scheduler는 할당되지 않은(no assign) Pod이 있는지 체크

5. 할당되지 않은 Pod이 있으면 조건에 맞는 Node를 찾아 해당 Pod을 할당

6. Kubelet은 자신의 Node에 할당되었지만 아직 생성되지 않은 Pod이 있는지 체크

7. 생성되지 않은 Pod이 있으면 명세를 보고 Pod을 생성

8. Pod의 상태를 주기적으로 API Server에 전달

 

728x90
반응형

'Server > kubernetes' 카테고리의 다른 글

Kubernetes 구성 및 Object (yaml 작성)[2]  (0) 2023.05.04
Kubernetes 구성 및 Object (yaml 작성)[1]  (0) 2023.05.03
Kubernetes 기초  (0) 2023.05.02
kubernetes 명령어  (0) 2023.04.28
profile

빅토리 코딩

@빅토리 코딩

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그