initContainer

zuckerfrei·2024년 1월 4일
0

Kubernetes

목록 보기
33/63

계속 실행되어야 하는 애플리케이션 컨테이너가 아니라,
단지 pod 실행시 한 번만 수행해야하는 작업이 있을 경우 사용한다.
git repo에서 소스 코드 받아오는 것, DB 세팅, 스크립트 실행 등등의 작업을 처리할 때 사용 가능

일반 컨테이너처럼 definition 파일에 initContainer 를 선언할 수 있음

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app.kubernetes.io/name: MyApp
spec:
  containers:
  - name: myapp-container
    image: busybox:1.28
    command: ['sh', '-c', 'echo The app is running! && sleep 3600']
  initContainers:
  - name: init-myservice
    image: busybox:1.28
    command: ['sh', '-c', "until nslookup myservice.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for myservice; sleep 2; done"]
  - name: init-mydb
    image: busybox:1.28
    command: ['sh', '-c', "until nslookup mydb.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for mydb; sleep 2; done"]

먼저 initContainer가 실행된 후 container가 실행된다.

initContainer가 여러 개일 경우 순서대로 하나씩 실행되고 종료된다.

하나라도 initContainer가 정상 종료되지 않으면, 정상적으로 initContainer가 종료될 때 까지 반복해서 다시 시작한다.

profile
무설탕 음료를 좋아합니다

0개의 댓글