티스토리 뷰

1. 문제#1 Sidecar 컨테이너를 활용한 로그 처리 

1) 문제 시나리오 

(1) Pod 구성

- 메인 컨테이너 nginx를 실행하며, HTTP요청을 처리

- Sidecar 컨테이너는 busybox이미지를 사용하여 메인 컨테이너의 로그를 /var/log/nginx 디렉토리에서 읽고, 이를 실시간으로 출력 

(2) 공유 불륨 설정 

- 두 컨테이너는 emptyDir 볼륨을 공유해야 하며, 메인 컨테이너는 로그 데이터를 이 볼륨에 저장 

(3) 결과 확인 

2) 해결과정

(1) YAML작성

apiVersion:v1
kind: Pod
metadata:
	name: sidecar-pod
spec:
	volumes:
    - name: shared-logs #공유 볼륨 정의
      emptyDir: {} #emptyDir 볼륨은 Pod의 생명주기 동안만 유지됨. # 임시저장소로, Pod 종료시 삭제 
    containers: 
    - name: nginx
  	  image: nginx
      volumeMounts:
      - name: shared-logs
        mountPath: /var/log/nginx # 메인 컨테이너가 로그를 저장할 경로 
    - name: sidecar
      image: busybox
      command: ["sh","-c","tail -f /var/log/nginx/access.log"] # 로그파일을 실시간 출력
      volumeMounts:
      -	name: shared-logs
      	mountPath: /var/log/nginx #Sidecar 컨테이너가 동일한 경로를 읽음

 (2) Pod 생성

kubectl apply -f sidecar-pod.yaml

(3) 결과 확인

# Pod 확인
kubectl get pods sidecar-pod
# Sidecar 컨테이너의 로그 확인 
kubectl logs sidecar-pod -c sidecar

#로그 출력 예시
127.0.0.1 - - [09/Oct/2023:10:00:00 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.68.0"

 

2. 문제#2 Init Container를 활용한 초기화 작업

1) 문제 시나리오 

(1) Init Container 구성 

- Init Container는 특정 디렉토리(/app/data)에 초기 데이터를 생성해야 함 

- 초기 데이터는 echo "Hello, kubernetes!" > /app/data/message.txt 명령어로 생성 

(2) 메인 컨테이너 구성

 - 메인 커테이너는 'busybox' 이미지를 사용하여, /app/data/message.txt. 파일의 내용을 출력 

(3) 공유 볼륨 설정 

- Init Container와 메인 컨테이너는 emptyDir 볼륨을 공유

(4) 결과 확인 

- Init Container가 데이터를 초기화한 후, 메인 컨테이너가 이를 출력 

2) 해결과정 

(1) YAML 작성 

apiVersion: v1
kind: Pod
metadata:
  name: init-container-pod
spec:
  volumes:
  - name: shared-data # 공유 볼륨 정의
    emptyDir: {}       # emptyDir 볼륨은 Pod의 생명 주기 동안만 유지됨
  initContainers:
  - name: init-container
    image: busybox # Init Container 실행 이미지
    command:
    - sh
    - "-c"
    - "echo 'Hello, Kubernetes!' > /app/data/message.txt" # 초기 데이터 생성 명령어
    volumeMounts:
    - name: shared-data
      mountPath: /app/data # 공유 볼륨 경로 설정
  containers:
  - name: main-container
    image: busybox # 메인 컨테이너 실행 이미지
    command:
    - sh
    - "-c"
    - "cat /app/data/message.txt" # 초기화된 데이터를 출력하는 명령어 실행
    volumeMounts:
    - name: shared-data
      mountPath: /app/data # 동일한 공유 볼륨 경로 설정

(2) Pod 작성 

kubectl apply -f init-container-pod.yaml

(3)결과 확인 

kubectl get pods init-container-pod

# 메인컨테이너 로그 확인
kubectl logs init-container-pod -c main-container

Hello, Kubernetes!
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함