티스토리 뷰

1. Init Containers

1) 정의 

- Kubernetes Pod에서 메인 어플리케이션 컨테이너가 시작되기 전에 실행되는 특수한 컨테이너 

- 초기화작업, 환경 설정, 데이터 준비와 같은 작업을 수행하며, 메인 컨테이너가 실행되기 위한 전제 조건을 충족

2) 특징

(1) 초기화 작업수행: 메인 컨테이너가 시작되기 전에 실행되어 환경을 준비 

(2) 순차 실행: 여러 Init Containers를 정의할 경우, 순차적으로 실행되며 각 Init Container가 성공적으로 완료되어야 다음 Init Container가 실행 

(3) Pod의 Pending 상태에서 실행 : Pod가 Pending 상태일  Init Containers가 실행되며, 모든 Init Containers가 완료되어야 Pod가 준비상태(Ready)로 전환 

(4) 실행 후 종료: Init Container는 작업완료 후 종료되며, 메인 컨테이너와 함께 동작하지 않음 

(5) 실패 시 재시작: Init Container가 실패하면 Kubernetes는 해당 Init Container를 반복적으로 재시작하여 성공할 때 까지 시도. 

3) 구현 방법 

(1) Pod 정의 파일에서 Init Container 추가 

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
spec:
  containers:
  - name: myapp-container
    image: busybox:1.28
    command: ['sh', '-c', 'echo The app is running! && sleep 3600']
    
  ## initContainer 정의
  initContainers:
  - name: init-myservice
    image: busybox
    command: ['sh', '-c', 'git clone <some-repository-that-will-be-used-by-application>']

- initcontainer에서 필요한 git 코드를 다운로드 한 뒤에, myapp-container 즉 메인 컨테이너가 시작한다. 

4) 동작 방식

(1)  쿠버네티스는 Pod의 네트워크, 스토리지가 준비된 후 Init 컨테이너를  순서대로 진행

(2) 각 Init Container는 성공적으로 완료되어야 다음단계로 진행

(3) 모든 Init Container가 완료되면 메인 컨테이너들이 병렬로 시작

(4) Pod가 재시작되면 모든 Init Containers도 다시 실행 

5) 사용사례

(1) 환경 설정 준비

- 어플리케이션에 필요한 구성파일 생성 또는 업데이트

(2) DB 마이그레이션

- DB 업데이트 또는 마이그레이션 작업

(3) 외부 서비스 확인 

- 외부 API나 DB와 같은 의존성이 준비될 때까지 대기 

(4) 보안 및 컴플라이언스

- 비밀 키나 인증정보를 안전하게 가져와 Pod내 공유 볼륨에 저장 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함