이 게시물은 아래 강의를 참고 하였습니다.
참고 강의 https://www.youtube.com/watch?v=KdATmTulf7s&list=PLApuRlvrZKojqx9-wIvWP3MPtgy2B372f&index=1
이론)
Init 컨테이너
- Pod 가 실행될 때 main 컨테이너가 동작하기 전에 먼저 실행되는 컨테이너
- 유틸리티 또는 설정 스크립트등을 포함할 수 있음 -> main 컨테이너가 실행되기 전에 해야되는 작업들을 지정 (Pod 내의 환경 구성, main 컨테이너가 실행되기 위한 data 파일이 있는지 없는지 확인 등등..)
- init 컨테이너는 항상 완료상태를 목표로 실행됨
- 여러개의 init 컨테이너 설정 가능
- 모든 init 컨테이너가 완료상태가 되어야 main 컨테이너가 동작할 수 있다.
다음 Documentation 참고
https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
문제)
- Perform the following
- Tasks:
- Add an init container to web-pod(which has been defined in spec file /data/cka/webpod.yaml).
- The init container should create an 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.
답안)
- webpod.yaml 파일 내용 확인
$ cat /data/workdir/webpod.yaml
apiVersion: v1
kind: Pod
metadata:
name: web-pod
spec:
containers:
- image: busybox:1.28
name: main
command: ['sh','-c','if [ !-f /workdir/data.txt ];then exit 1;else sleep 300;fi']
volumeMounts:
- name: workdir
mountPath: "/workdir"
volumes:
- name: workdir
emptyDir: {}
- init containers 추가
$ sudo vi /data/workdir/webpod.yaml
apiVersion: v1
kind: Pod
metadata:
name: web-pod
spec:
containers:
- image: busybox:1.28
name: main
command: ['sh','-c','if [ !-f /workdir/data.txt ];then exit 1;else sleep 300;fi']
volumeMounts:
- name: workdir
mountPath: "/workdir"
initContainers:
- name: init
image: busybox:1.28
command: ['sh', '-c', "touch /workdir/data.txt"]
volumeMounts:
- name: workdir
mountPath: "/workdir"
volumes:
- name: workdir
emptyDir: {}
- webpod.yaml 파드 동작
$ sudo kubectl apply -f /data/cka/webpod.yaml
- pod 생성 확인
$ sudo kubectl get pods
- Pod 에 exec 로 접근하여 data.txt가 생성되었는지 확인
$ sudo kubectl exec web-pod -c main -- ls -l /workdir/data.txt
'k8s' 카테고리의 다른 글
CKA 준비 (16) ConfigMap 운영 (0) | 2022.06.11 |
---|---|
CKA 준비 (15) NodePort 서비스 생성 (0) | 2022.06.11 |
CKA 준비 (12) Pod Log 추출 / (13) CPU 사용량 높은 Pod 검색 (0) | 2022.06.04 |
CKA 준비 (11) Deployment & Expose the service (2) | 2022.05.31 |
CKA 준비 (10) Node 정보 수집 (6) | 2022.05.31 |