워크로드 리소스
* 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 은 단 한번의 수행을 보장한다 ( 옵션 따라 다름 )
수업 자료