[Kubernetes] 포드를 사용하는 다른 오브젝트들

연수·2021년 12월 10일
0

kubernetes

목록 보기
15/15

✅ 잡 (Jobs)

  • 특정 동작을 수행하고 종료해야 하는 작업을 위한 오브젝트
  • 잡에서 원하는 최종 상태는 '포드가 실행되어 정상적으로 종료되는 것'
  • 잡에서 생성된 포드는 항상 실행 중인 것을 목표로 하지 않기 때문에, 한 번 수행하고 종료되는 배치(Batch) 작업을 위해 사용이 가능하다.
  • 단, 잡은 동시성을 엄격하게 보장해야 하는 병렬 처리를 위해 사용하는 것은 아니다.
  • 잡의 포드가 실패하면 포드가 restartPolicy에 따라 재시작될 수 있으므로 잡이 처리하는 작업은 멱등성을 가지는 것이 좋다.
  • 세부 옵션
    • spec.completions: 잡이 성공했다고 여겨지려면 몇 개의 포드가 성공해야 하는지(정상적으로 종료돼야 하는지) 설정한다.
    • spec.parallelism: 동시에 생성될 포드의 개수를 설정한다. 기본값은 1
  • 크론잡(CronJobs)
    • 잡을 주기적으로 실행하는 쿠버네티스 오브젝트
    • 특정 시간 간격으로 잡을 반복적으로 실행할 수 있기 때문에 데이터 백업이나 이메일 전송 등의 용도로 사용하기에 적합하다.

 

👿 데몬셋(DaemonSets)

  • 쿠버네티스의 모든 노드에 동일한 포드를 하나씩 생성하는 오브젝트
  • 로깅, 모니터링, 네트워킹 등을 위한 에이전트를 각 노드에 생성해야 할 때 유용하게 사용할 수 있다.
  • 특정 노드에만 데몬셋의 포드를 생성하고 싶다면 nodeSelector나 Node Affinity를 포드에 적용할 수도 있다.

 

🌕 스테이트풀셋 (StatefulSets)

  • 데이터베이스처럼 상태를 갖는 애플리케이션을 쿠버네티스에서 실행하는 것은 매우 복잡한 일이다. (관리, 접근 방법 등..)
  • 상태를 갖는 포드를 관리하기 위한 오브젝트
  • 상태를 없는 포드 → 가축 / 상태를 갖는 포드 → 반려동물 (대체 불가능하며 고유한 식별자를 갖는다.)
  • 스테이트풀셋에서 생성되는 포드는 모두 고유하며, 다른 개체로 취급되어야 한다.
  • spec.serviceName: 스테이트풀셋의 포드에 접근할 수 있는 서비스의 이름을 입력해야 한다.
  • 헤드리스 서비스(Headless Service): 서비스의 이름으로 포드의 접근 위치를 알아내기 위해 사용되며, 서비스의 이름과 포드의 이름을 통해서 포드에 직접 접근할 수 있다.
  • 스테이트풀셋은 퍼시스턴트 볼륨을 포드에 마운트해 데이터를 보관하는 것이 바람직하다.
  • 스테이트풀셋을 생성할 때 포드마다 퍼시스턴트 볼륨 클레임을 자동으로 생성함으로써 다이나믹 프로비저닝 기능을 사용할 수 있도록 지원한다.

 

[출처] 시작하세요! 도커/쿠버네티스 (용찬호 지음)

profile
DCDI

0개의 댓글