티스토리 뷰
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내 공유 볼륨에 저장
'쿠버네티스' 카테고리의 다른 글
[쿠버네티스] 6. Cluseter Maintanence 2) 쿠버네티스 Release, Version (0) | 2024.12.13 |
---|---|
[쿠버네티스] 6. Cluster Maintanence 1) Cordon, Uncordon, Drain (0) | 2024.12.12 |
[쿠버네티스] 5. Application Managent 4) Secrets (0) | 2024.12.11 |
[쿠버네티스] 5. Application Management 3) 환경변수 설정 (0) | 2024.12.11 |
[쿠버네티스] 5. Application Management 2) Commands, Arguments (0) | 2024.12.11 |