본문 바로가기
[DevOps]/Kubernetes

kubernetes - initContainer : 초기화를 위한 컨테이너

by 팡펑퐁 2024. 1. 17.
728x90

📌 initContainer(초기화 컨테이너)

  • Kubernetes Pod 내에서 실행되는 특별한 종류의 컨테이너이다.
  • 주 컨테이너가 시작되기 전에 실행되며, 주로 초기화 작업을 수행하기 위해 사용된다.
  • 주 컨테이너와는 독립적으로 실행되며 initContainer의 실행이 완료되어야 주 컨테이너가 시작된다. 
  • 각각의 순서대로 실행되며 이전 initContainer가 성공적으로 완료되어야 다음 initContainer가 실행된다.
  • 주 컨테이너와 별도의 리소스를 사용하며 다른 네트워크 네임스페이스에 속해 있기 때문에 주 컨테이너와 직접 통신할 수는 없다.
  • Pod 내에서 초기화 작업을 수행하여 애플리케이션의 안정성과 신뢰성을 높일 수 있다.

 

🤔 initContainer의 사용 목적

데이터 초기화

주 컨테이너가 시작되기 전에 데이터를 사전에 준비하기 위해 initContainer를 사용할 수 있다.

예를 들어, 데이터베이스나 파일 시스템 초기화 등의 작업을 수행할 수 있다.

종속성 처리

주 컨테이너가 실행되기 전에 종속성을 처리하기 위해 initContainer를 사용할 수 있다.

예를 들어, 데이터베이스 컨테이너를 실행하기 전에 초기 데이터베이스 스키마를 생성하는 등의 작업을 수행할 수 있다.

환경 설정

initContainer를 사용하여 주 컨테이너의 환경을 사전에 설정할 수 있다.

예를 들어 구성 파일을 다운로드하거나, 시크릿 또는 구성맵에서 인증 정보를 가져와 설정 파일을 생성하는 등의 작업을 수행할 수 있다.

 

 

📜 yaml 예시

apiVersion: v1
kind: Pod
metadata:
  name: red
  namespace: default
spec:
  containers:
  - command:
    - sh
    - -c
    - echo The app is running! && sleep 3600
    image: busybox:1.28
    name: red-container
  initContainers: // 초기화 컨테이너
  - image: busybox
    name: red-initcontainer
    command: 
      - "sleep"
      - "20"

 

 

 

 

참고

뤼튼

Udemy - Certified Kubernetes Administrator (CKA) with Practice Tests

728x90