본문 바로가기
cloud/k8s(문제풀이)

[따배쿠CKA]14. init 컨테이너를 포함한 POD 운영

by mozi2 2022. 8. 11.
반응형

*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/

 

Init Containers

This page provides an overview of init containers: specialized containers that run before app containers in a Pod. Init containers can contain utilities or setup scripts not present in an app image. You can specify init containers in the Pod specification

kubernetes.io

* 본 게시글은 "TTABAE-LEARN" 을 보고 정리한 내용입니다.

 

 

728x90
반응형