반응형
파드 내에 초기화만을 담당하는 컨테이너를 설정할 수도 있다. 그러면 초기화만을 수행하는 컨테이너와 요청을 처리하는 컨테이너를 별도로 개발하여 각각 재사용할 수 있다.
예를 들어 스토리지를 마운트할 때 '스토리지 안에 새로운 디럭터리를 만들고, 소유자를 변경한 후 데이터를 저장'하는 것과 같은 초기화 처리를 전담할 수 있다.
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로 되어 있는 것을 알 수 있다.
반응형
'Docker & Kubernetes' 카테고리의 다른 글
Jenkins + Docker + Nginx 무중단 자동화 배포하기(Centos) (0) | 2022.07.24 |
---|---|
Centos Docker 컨테이너 내부에 Docker 설치하기 (0) | 2022.07.22 |
파드(Pod)의 동작 확인과 헬스 체크(health check) (0) | 2022.02.04 |
매니페스트(Manifest)를 이용해 쿠버네티스 오브젝트 생성하기 (0) | 2022.01.30 |
잡 컨트롤러(Job Controller)에 의한 파드(Pod) 실행 (0) | 2022.01.30 |