실행 흐름
1. kubectl 명령어로 Deployment 생성
- 사용자가 kubectl을 통해 Deployment를 생성하면, 이 요청이 Kubernetes API 서버로 전달됩니다.
2. Deployment Controller가 ReplicaSet 생성
- Deployment Controller는 사용자가 원하는 상태(예: 특정 수의 Pod를 실행)를 보고 ReplicaSet을 생성합니다.
- 이 ReplicaSet은 "짜장면 2개"와 같은 상태로, 실행해야 할 Pod의 수(=컨테이너를 돌리는 Pod)를 정의합니다.
3. ReplicaSet Controller가 주문서 Pod 생성
- ReplicaSet Controller는 정의된 수만큼의 Pod 오브젝트(주문서 Pod)를 생성합니다.
- 이 주문서 Pod는 컨테이너가 어떻게 실행되어야 할지에 대한 명세서입니다. 즉, 어떤 컨테이너를 실행해야 하는지, 자원 요구 사항은 무엇인지 등의 정보를 담고 있습니다.
4. Scheduler가 스케줄링 후 etcd에 결과 기록
- 스케줄러는 이 주문서 Pod를 보고, 어떤 노드(Worker Node)에서 실행될지 결정합니다.
- 스케줄링 결과(어느 노드에서 Pod가 실행될지)를 etcd에 기록합니다.
5. kubelet이 Pod를 실행
- 각 Worker Node에 상주하는 kubelet은 etcd와 API 서버에서 스케줄링된 Pod의 정의(주문서 Pod)를 가져옵니다.
- kubelet은 이 주문서를 보고 컨테이너를 돌리는 Pod를 실제로 생성하고, 해당 컨테이너를 실행시킵니다.
비유 정리
- ReplicaSet은 "짜장면 2개 필요"라고 적혀 있는 상태입니다.
- ReplicaSet Controller는 이 "짜장면 2개"라는 요구를 보고, 짜장면을 만들기 위한 Pod 2개의 주문서를 작성합니다.
- 이 주문서(Pod 오브젝트)를 보고, 스케줄러는 각각의 짜장면(Pod)이 어느 주방(노드)에서 만들어질지를 결정합니다.
- 마지막으로 kubelet이 주방에서 실제로 짜장면(컨테이너)을 만들어서 실행하게 됩니다.
요약
- ReplicaSet은 실행해야 할 Pod의 수(목표 상태)를 정의하는 역할을 합니다.
- ReplicaSet Controller는 그 목표에 맞춰 Pod 오브젝트(주문서 Pod)를 생성하는 역할을 합니다.
- 그 후, 스케줄러와 kubelet이 그 주문서를 보고 실제로 컨테이너를 실행하게 됩니다.
'클라우드' 카테고리의 다른 글
Kubernetes Volumes (0) | 2024.10.12 |
---|---|
K8S 네트워킹 (1) | 2024.10.11 |
Kubernetes Basic - 2 (2) | 2024.10.08 |
Restful API (1) | 2024.10.06 |
Kubernetes Basic - 1 (0) | 2024.10.06 |