Docker & Kubernetes
초기화 전용 컨테이너 - initContainers
Beekei
2022. 2. 4. 01:45
반응형
파드 내에 초기화만을 담당하는 컨테이너를 설정할 수도 있다. 그러면 초기화만을 수행하는 컨테이너와 요청을 처리하는 컨테이너를 별도로 개발하여 각각 재사용할 수 있다.
예를 들어 스토리지를 마운트할 때 '스토리지 안에 새로운 디럭터리를 만들고, 소유자를 변경한 후 데이터를 저장'하는 것과 같은 초기화 처리를 전담할 수 있다.
Init-sample.yml
apiVersion: v1
kind: Pod
metadata:
name: init-sample
spec:
containers:
- name: main # 메인 컨테이너
image: ubuntu
command: ["/bin/sh"]
args: ["-c", "tail -f /dev/null"]
volumeMounts:
- mountPath: /docs # 마운트 경로
name: data-vol
readOnly: false
initContainers: # 초기화 전용 컨테이너, 메인 컨테이너 전에 실행
- name: init
image: alpine
command: ["/bin/sh"]
# /mnt/html 디렉터리 생성, 소유자 변경
args: ["-c", "mkdir /mnt/html; chown 33:33 /mnt/html"]
volumeMounts:
- mountPath: /mnt # 마운트 경로
name: data-vol
readOnly: false
volumes: # 파드상의 공유 볼륨
- name: data-vol
emptyDir: {}
매니페스트를 적용한다. kubectl exec의 옵션 -c는 파드 내의 컨테이너를 지정하기 위해 사용한다.
생성된 파드에 접속해보면 docs밑에 html의 디렉터리가 생성되어있고 소유자와 그룹이 root가 아닌 www-data로 되어 있는 것을 알 수 있다.
반응형