[클라우드/쿠버네티스] initContainers

    728x90
    반응형

    출처

    1) Cloud Native DevOps with Kubernetes / 쿠버네티스를 활용한 클라우드 네이티브 데브옵스

     

     

    InitContainer

    1) pod가 2개 이상 실행될 때, 필요한 초기 작업을 수행하는 컨테이너

    2) 순차적 실행, Pod의 컨테이너와는 별개로 실행, 환경 초기화, 격리된 실행 환경 등의 특징을 가지고 있음

    3) 애플리케이션 초기화, 환경 설정, 보안 검증, 파일 다운로드 등의 사례에 주로 사용됨

     

     

    InitContainer특징

    1) 순차적 실행: 모든 initContainers는 순차적으로 실행됨 (첫 번째 initContainer가 완료되어야만 다음 initContainer가 실행)

    2) Pod의 컨테이너와는 별개로 실행: initContainers의 컨테이너가 모두 실행되어야 주요 pod가 실행됨

    3) 환경 초기화: 애플리케이션이 실행되기 전에 환경을 준비하는 데 사용됨(DB 초기화, 파일 시스템 준비, Config 파일 생성 등)

    4) 격리된 실행 환경: initContainers는 독립적으로 실행되며, 주요 pod와는 별도의 이미지, 볼륨, 환경 변수를 사용함

     

     

    InitContainer yaml

    #initContainer 설정 작성
    [root@]$ vi my-pod.yaml
    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod
    spec:
      initContainers:
        - name: init-mydb
          image: busybox
          command: [ "ls" ]
          args:
          - "-al"
      containers:
        - name: my-app
          image: nginx
          ports:
            - containerPort: 8080
          volumeMounts:
            - name: container-volume
              mountPath: /home/imfra/volume
      volumes:
        - name: container-volume
          emptyDir: {}

     

     

    InitContainers의 제한 사항

    1) pod가 재시작되면 초기화 작업이 다시 수행됨 > 유지X

    2) initContainers가 오랜 시간 동안 실행되거나 무한 루프에 빠지면, Pod의 주요 컨테이너가 시작되지 않으므로 적절한 타임아웃 및 에러 처리가 필요함

     

    728x90
    반응형

    댓글