콘텐츠로 이동

2025 07 18

2025-07-18

k8s Job

  • 개요
    • 하나 이상의 Pod를 지정하고, 지정된 수의 Pod를 성공적으로 실행하도록 하는 설정
    • 백업/배치 등 한번 실행하고 종료되는 성격의 작업에 사용될 수 있음
  • 예시

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: pi
    spec:
      template:
        spec:
          containers:
    
            - name: pi
              image: perl
              command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
          restartPolicy: Never
      backoffLimit: 4
    

    • restartPolicy: 재시작 유무 (Always, OnFailure, Never)
    • backoffLimit: 잡에 실패할 경우 다시 실행시킬 재시도 횟수 지정

k8s pod에서 container를 지우면 (crictl rm -f CONTAINERID)?

  • 개요
    • Pod 수준에서도 Self-heal을 제공.
    • Pod의 restartPolicy는 Always가 기본값
  • 특징
    1. kubelet에 의한 자동 복구
      • Pod와 그 내부 컨테이너의 상태를 주기적으로 점검
      • kubelet은 원하는 상태로 맞추기 위해 즉시 동일한 컨테이너 생성
    2. 사용자의 상태 변경 무효
      • ContainerId가 변경되며 신규 컨테이너로 대체, Pod는 Running
    3. 멀티 컨테이너 Pod의 경우
      • Pod 내부에 여러 컨테이너 존재할 때, 해당 컨테이너만 재생성

k8s DaemonSet vs StaticPod

  • DaemonSet
    • 모든 노드에 똑같이 실행되어야 하는 에이전트
    • 노드가 추가될 때마다 자동으로 Pod가 배포됨. 스케일/운영 편의성 높음
    • API 서버를 통한 선언적 관리. 롤링 업데이트 등 강력한 관리 지원
  • StaticPod
    • API 서버나 컨트롤러가 정상적이지 않은 초기 클러스터 부트스트랩 단계의 필수 컴포넌트 운영에 쓰임
    • kubelet이 직접 관리하며, API 서버 장애나도 Pod 기동
    • 클러스터 기반 관리가 불필요하거나, 특정 노드 전용 시스템 서비스가 필수적일 때 사용