Home 9. Other objects using pod
Post
Cancel

9. Other objects using pod

Other objects using pod

Other Objects using pod

Jobs

특정 동작을 수행하고 종료해야 하는 작업을 위한 오브젝트를 말한다. 포드가 실행되어 정상적으로 종료되는 것(포드 컨테이너가 종료코드로서 0을 반환해 Completed 상태가 되는 것)을 목표로 한다.

  • spec.completions: job이 성공하려면 몇 개의 포드가 성공해야 하는지?
  • spec.parallelism: 동시에 생성될 포드의 개수를 설정
  • spec.backoffLimit: 포드가 실패하는 경우, 최대 재시도 횟수(기본은 6번)

CronJobs

CronJob은 주기적으로 Job을 실행하는 오브젝트이다. 데이터 백업이나 이메일 전송 등의 용도로 사용하기에 적절하다. 리눅스에서 흔이 쓰이는 크론(Cron)의 스케줄 방법을 그대로 사용한다. 나머지는 jobTemplate 선언 내용과 동일하다.

DaemonSets

DaemonSets 은 쿠버네티스의 모든 노드에 동일한 포드를 하나씩 생성하는 오브젝트이다. 로깅, 모니터링, 네트워킹 등을 위한 에이전트를 각 노드에 생성해야 될 때 유용하게 사용할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
apiVersion: apps/v1
kind: DaemonSet                                     # Daemonset 명시
metadata:
    name: daemonset-example
spec:
    selector: 
        matchLabels:
            name: my-daemonset-example              # 포드를 생성하기 위한 라벨 셀렉터 설정
    template:
        metadata:                                   # 포드 라벨 설정
            labels:
                name: my-daemonset-example
        spec:
            tolerations:
            - key: node-role.kubernetes.io/master   # 마스터 노드에도 포드 생성
              effect: NoSchedule
            containers:
            - name: daemonset-example
              image: busybox                        # 테스트를 위해 busybox 사용
              args: ["tail", "-f", "/dev/null"]
              resources:
                limits:
                    cpu: 100m
                    memory: 200Mi

StatefulSets

쿠버네티스에서 마이트로 서비스 구조로 동작하는 어플리케이션은 대부분 상태를 갖지 않는(Stateless) 경우가 많다. 그러한 경우에는 디플로이먼트를 통해 쉽게 앱을 배포할 수 있다. 하지만 상태를 갖는(Stateful) 애플리케이션을 쿠버네티스에서 배포하는 것은 쉽지않다. StatefulSets 는 상태를 갖는 포드를 관리하기 위한 오브젝트 이다.

포드 이름에 붙여지는 숫자를 통해, 각 포드를 고유하게 식별한다. 또한 요청이 랜덤 포트가 아닌 개별 포트에 접근해야 하므로, 일반적인 서비스가 아닌 Headless Service를 사용한다.

또한 쿠버네티스는 StatefulSet을 생성할 때, 포드마다 PVC를 자동으로 생성함으로써 다이나믹 프로비저닝 기능을 사용할 수 있도록 지원한다. volumeClaimTemplates 를 사용하면 StatefulSet의 각 포드에 대해 PVC가 동적으로 생성되지만, 반대로 삭제하는 경우에는 직접 삭제해 주어야 된다. 기존의 데이터를 항상 안전하게 보존해야 하므로 자동삭제는 되지 않는다.

This post is licensed under CC BY 4.0 by the author.