티스토리 뷰
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!
'쿠버네티스' 카테고리의 다른 글
CKA 기출 문제 데몬셋 (0) | 2025.01.01 |
---|---|
CKA 기출문제 정리 HPA (0) | 2025.01.01 |
쿠버네티스 기출 문제 정리 Topology Spread Constraints (0) | 2025.01.01 |
CKA 기출개념 정리 Job (0) | 2025.01.01 |
CKA 기출개념 파드: 특정 노드에서만 생성하기 (1) | 2025.01.01 |