*init container
: 하나의 파드안에 여러개의 컨테이너가 동작할 수 있다 이때 웹 컨테이너를 main.
: 파드 안에서 main 컨테이너가 실행되기 전에 실행하는 컨테이너를 init container 이라고 한다.
main 컨테이너랑 DB랑 연결이 되어 있다고 가정해보자
main 컨테이너는 Data 파일이 있어야지만 main 이 실행할 수 있다.
그러면, data 파일에 에러가 생기면 결국 main 은 실행될 수 없다.
이때, init 컨테이너가 스토리지 안에 데이터 파일을 가져다가 그 파일이 있는지 유무를 "ls" 명령어 실행을 한다.
실행 파일이 있으면 true 없으면 false 로 해서 data file 유무를 init 컨테이너가 확인해
main 컨테이너를 작동시킬 수 있다.
init 컨테이너는 여러개가 들어갈 수 있다.
*CKA, CKAD 둘다 나올 수 있음
Addtional init conainer
Q. cluster: kubectl conk8s
Perform the following
Tasks:
- Add and init container to web-pod(which has been defined in spec file /data/cka/webpod.yaml)
- The init container should create and empty file named /workdir/data.txt
- if /workdir/data.txt is not detected, the Pod should exit
- Once the spec file has been updated with the init container definition, the Pod should be created
* 실습을 위한 사전 세팅
vi /data/cka/web-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: web-pod
spec:
containers:
- name: maicd
image: busybox:1.28
command: ['sh', '-c', 'if [ !-f /workdir/data.txt ];then exit 1;else sleep 300;fi']
volumeMounts:
- name: workdir
mountPath: "/workdir"
volumes:
- name: workdir
emptyDir: {}
1. pod 확인
k get pods
2. vi 로 init container
vi web-pod.yaml
: vi로 init container 을 만들어준다.
: 이때, 데이터 파일을 생성하기 위해서는 volume Mount 가 되어 있어야 하기 때문에 이부분도 추가해줘야 한다.
*설명
workdir 안에 init 컨테이너가 잇고 이 안에 touch 명령어를 통해 data.txt 파일을 만든다.
그럼 workdir 에 data.txt 파일이 있다. 성공적으로 잘 생성되면 main 컨테인가 생성된다.
main 은 /workdir/data.txt 파일이 잘 만들어지면 실행되고 아니면 실행되지 않는다.
3. 적용
k apply -f /data/cka/web-pod.yaml
4. 확인
k get pods
5. 컨테이너 안에서 data.txt 파일이 만들어졌는지 확인 필요
k exec web-pod -c main -- ls -l /workdir/data.txt
메인컨테이너 안에서 /workdir/data.txt 파일이 존재하면 잘 실행된 것
https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
* 본 게시글은 "TTABAE-LEARN" 을 보고 정리한 내용입니다.
'cloud > k8s(문제풀이)' 카테고리의 다른 글
[따배쿠CKA]16. ConfigMap 운영 (0) | 2022.08.11 |
---|---|
[따배쿠CKA]15. NodePort 서비스 생성 (0) | 2022.08.11 |
[따배쿠CKA]13. CPU 사용량이 높은 POD 검색 (0) | 2022.08.10 |
[따배쿠CKA] 12. Pod Log 추출 (0) | 2022.08.10 |
[따배쿠CKA]11. Deployment & Expose the service (0) | 2022.08.10 |