Open sangw0804 opened 3 years ago
디플로이먼트(레플리카셋)은 내부적으로 포드를 사용하는 오브젝트이다. 요거 말고도 내부적으로 포드를 사용하는 오브젝트들이 있는데, 다른 오브젝트들에 대해 알아보자.
잡은 특정 작업을 수행하고 성공적으로 종료되는 것을 목표로 하는 오브젝트이다. 디플로이먼트와는 달리 '특정 포드가 실행중' 이 desire state 가 아니고, '특정 포드가 실행되어 성공적으로 종료(completed)'가 desire state 이다.
apiVersion: batch/v1 kind: Job metadata: name: job-hello-world spec: template: spec: restartPolicy: Never containers: - name: job-hello-world image: busybox args: ["sh", "-c", "echo Hello, World && exit 0"]
위 잡 오브젝트는 포드를 하나 생성하고 해당 포드가 정상 종료되면 더 이상 실행되지 않는다.
job 오브젝트는 배치성 작업에 주로 활용될 것 같으니.. 실제로는 아래 CronJob 오브젝트를 많이 사용할 듯 하다.
apiVersion: batch/v1beta1 kind: CronJob metadata: name: cronjob-example spec: jobTemplate: spec: completions: 8 parallelism: 2 template: spec: restartPolicy: Never containers: - name: cronjob-example image: busybox args: ["sh", "-c", "date"] schedule: "*/1 * * * *"
데몬셋은 쿠버네티스 클러스터의 모든 노드에 해당 포드를 하나씩 생성하는 오브젝트이다. 주로 모니터링, 로깅 등을 담당할 사이드카 어플리케이션을 생성할때 많이 쓰인다.
apiVersion: apps/v1 kind: DaemonSet metadata: name: daemonset-example spec: selector: matchLabels: name: my-daemonset template: metadata: labels: name: my-daemonset spec: tolerations: - key: node-role.kubernetes.io/master effect: NoSchedule containers: - name: daemonset-example image: busybox args: ["tail", "-f", "/dev/null"] resources: limits: cpu: 100m memory: 200mi
데몬셋은 노드마다 하나의 포드가 있는 것이 중요하므로, 해당 노드에 장애가 발생하더라도 eviction 이 일어나지 않도록 여러 toleration이 설정된다고 함.
스테이트풀 셋은 일반적인 stateless 한 파드와는 다르게 식별성을 지닌 파드를 만들고 싶을때 사용하는 오브젝트이다.
요부분은 잘 이해가 안되어서 구글링을 좀 해봤는데... https://bcho.tistory.com/1306 여기가 그나마 좀 정리가 잘 되어있다.
즉, 스테이트풀 셋으로 파드 3개를 만들면 해당 파드는 파드1, 파드2, 파드3으로 각각 고유하게 구분되는 이름을 갖는다. 이로 인해 다음 사항들이 deployment와 달라진다.
예시로 든 것이 dbms 프로세스인데(master/slave),,, 그렇다면 그냥 2개의 deployment로 나누어서 띄우면 되지 않나?
https://baeji77.github.io/dev/book/10.statefulSet/
https://bcho.tistory.com/1310
스테이트풀셋 아래 있는 파드들은 서로 다른 어플리케이션?
디플로이먼트(레플리카셋)은 내부적으로 포드를 사용하는 오브젝트이다. 요거 말고도 내부적으로 포드를 사용하는 오브젝트들이 있는데, 다른 오브젝트들에 대해 알아보자.
1. 잡
잡은 특정 작업을 수행하고 성공적으로 종료되는 것을 목표로 하는 오브젝트이다. 디플로이먼트와는 달리 '특정 포드가 실행중' 이 desire state 가 아니고, '특정 포드가 실행되어 성공적으로 종료(completed)'가 desire state 이다.
위 잡 오브젝트는 포드를 하나 생성하고 해당 포드가 정상 종료되면 더 이상 실행되지 않는다.
2. 데몬셋
데몬셋은 쿠버네티스 클러스터의 모든 노드에 해당 포드를 하나씩 생성하는 오브젝트이다. 주로 모니터링, 로깅 등을 담당할 사이드카 어플리케이션을 생성할때 많이 쓰인다.
3. 스테이트풀 셋
스테이트풀 셋은 일반적인 stateless 한 파드와는 다르게 식별성을 지닌 파드를 만들고 싶을때 사용하는 오브젝트이다.
즉, 스테이트풀 셋으로 파드 3개를 만들면 해당 파드는 파드1, 파드2, 파드3으로 각각 고유하게 구분되는 이름을 갖는다. 이로 인해 다음 사항들이 deployment와 달라진다.
예시로 든 것이 dbms 프로세스인데(master/slave),,, 그렇다면 그냥 2개의 deployment로 나누어서 띄우면 되지 않나?