본문 바로가기

클라우드/쿠버네티스(Kubernetes)

쿠버네티스 Kubernetes 스토리지 볼륨 3 / 초기화 컨테이너 (initcontainer)

# 초기화 컨테이너

- gitRepo 볼륨은 더 이상 사용되지 않는다, 대신 InitContainer 를 이용하여 Git 저장소가 있는 컨테이너를 프로비전 한다.

- 초기화 컨테이너(InitContainer )에  EmptyDir 볼륨을 마운트 하고, git 명령을 사용해서 Git 저장소를 복제하고, 파드 컨테이너  에서 EmptyDir 볼륨을 마운트한다.

- 컨테이너 실행 전 추가작업이 필요할 때(파드 생성할 때 딱 한번, 애플리케이션은 꼭 종료되는 애플리케이션)

- git 저장소를 제공

- 파드의 애플리케이션 컨테이너가 실행되기 전에 , 여러가지 작업을 수행 하도록 설정, 성공하기 전까지는 에플리케이션 컨테이너는 실행되지 않는다.

 

# 초기화 컨테이너를 사용하여 Git 저장소를 제공

더보기

# ldh-pod-git.yml
apiVersion: v1
kind: Pod
metadata:
  name: ldh-pod-git
spec:
  initContainers:
    - name: git-clone
      image: alpine/git
      args:
        - clone
        - --single-branch
        - --
        - https://github.com/kubernetes/kubernetes
        - /repo
      volumeMounts:
        - name: git-repository
          mountPath: /repo
  containers:
    - name: git-container
      image: busybox
      args: ['tails', '-f'. '/dev/null']
      volumeMounts:
        - name: git-repository
          mountPath: /repo
  volumes:
    - name: git-repository
      emptyDir: {}
      

.spec.initContainers (초기화 컨테이너)가 쿠버네티스 저장소를 Git 으로 클론하여 / repo 디렉토리로 저장 

-> /repo 디렉터리는 emptyDir 타입의 볼륨인 git-repository로 제공

->  초기화 컨테이너가 성공하면 git-container 컨테이너에서 똑같은 git-repository 볼륨을 마운트 한다

 

 

# 초기화 컨테이너를 가지고 있는 파드 생성

-파드의 상태가 초기화 (Init:0/1)에서 파드 초기화 중 (PodInitializing)으로 전환 되고,

 마지막으로 초기화를 성공하면 애플리케이션 컨테이너가 실행(Running)된다.

 

# 파드 생성

 

# Git 저장소가 클론 됐는지 확인