워크로드 리소스
* Replication Controller
* ReplicaSet
* Deployment
* StatefulSet
* DaemonSet
* Job
* CronJob

1) ReplicationController (RC)
	기본적인 파드의 개수를 보장함
	
	[참고] Replication Controller vs ReplicaSet
	
	* [**중요**] 잘 사용되지 않음
	* Selector가 선택한 (Pod Labels)를 가진 개수(replicas)를 보장하는 역할
	
2) ReplicaSet (RS)
	ReplicationController의 확장
	* [**중요**] RS는 RC 비해서 폭 넓은 선택(selector)을 할 수 있다.
	
3) Deployment 
	대부분의 파드는 Deployment로 배포
	
	[참고] ReplicaSet vs Deployment
	[**중요**] 가장 일반적으로 많이 사용되는 워크로드 리소스
				* 롤링 업데이트와 롤백이 점진적으로 진행됨
				
	Pod(Container) < ReplicaSet < Deployment
										pod의 묶음   롤링 업데이트/백
										
  # kubectl create deploy mydeploy --image=nginx --port=80 --replicas=3
  
  # kubectl set image deploy mydeploy mycontainer=nginx:1.5 --record
  
  # kubectl rollout history deploy mydeploy
  # kubectl rollout undo deploy mydeploy
  # kubectl rollout undo deploy mydeploy --to-revision=#num
  
4) DaemonSet  
	[[참고](<https://www.notion.so/6-2791400eefa580769e58dfca96cbe051>)] DaemonSet vs Static Pod
				* [중요] DaemonSet 은 각 노드에 파드를 무조건 한 개 씩 존재하도록 보장함
				* 롤링 업데이트와 롤백 지원함
				
5) StatefulSet
	[참고] Deployment vs StatefulSet
				* Stateless 서비스 => Deployment
				* Stateful 서비스  => StatefulSet(MySQL, MariaDB, MongoDB, Kafca, Cassandra)
				
				* [**중요**] 상태가 유지돼야 하는 서비스 => StatefulSet
						- 유지되는 정보
							(ㄱ) Pod 이름이 동일하게
							(ㄴ) 같은 볼륨 접근
							(ㄷ) 순차적인 스케일 아웃/스케일 인
							(ㄹ) 순차적인 롤링 업데이트/롤백
				
				* Headless Service + StatefulSet
					- IP 없이 이름만 존재하는 서비스
					- 이름을 직접 주고 싶을때 씀
					
6) Job/CronJob
			Job => at CMD             : 단 한번만 수행, ex. 메일/문자 메세지 발송
	CronJob => crontab CMD        : 백업, 관리 유지 보수 작업
	[ex] (node) crictl rmi prune  : 안 쓰는 이미지 삭제
	
	* Job 은 단 한번의 수행을 보장한다 ( 옵션 따라 다름 )

수업 자료

Kubernetes_제06장_워크로드 리소스_2025_0806[책작업].hwp