본문 바로가기
  • 오늘처럼
소프트웨어 아키텍처/Kubernetes

[Kubernetes] 1-13. 파드 내부 컨테이너 간의 볼륨 공유

by bluefriday 2022. 5. 6.
반응형

이번에는 하나의 파드 안에 있는 여러개의 컨테이너들이 서로 볼륨(데이터) 공간을 공유하는 실습을 수행한다.

상세 조건은 다음과 같다.

  • Name : test-multi-container
  • Namespace : test-namespace
  • 파드 내부 개별 Container 별 조건
    • Container 1
      • Name : c1
      • image : nginx:1.19.3 
      • 수행 : 구동 시 파드 내 환경 변수 MY_NODE_NAME 에 파드가 구동되는 노드 이름을 저장
    • Container 2
      • Name : c2
      • image : busybox:1.3
      • 수행 : 매 1초마다 date 명령의 결과를 /공유볼륨경로/date.log 에 쓰기 수행
    • Container 3
      • Name : c3
      • image : busybox:1.3
      • 수행 : tail 명령어로 /공유볼륨경로/date.log 파일을 추적유지(tail -f)

상단 내용을 수행하는 파드 yaml 을 준비한다.

apiVersion: v1
kind: Pod
metadata:
  name: test-multi-container
  namespace: test-namespace
spec:
  containers:
  - image: nginx:1.13.6
    name: c1                                                                      
    env:                                                                          
    - name: MY_NODE_NAME                                                          
      valueFrom:                                                                  
        fieldRef:                                                                 
          fieldPath: spec.nodeName                                                
    volumeMounts:                                                                 
    - name: vol                                                                   
      mountPath: /vol                                                             
  - image: busybox:latest
    name: c2                                                                      
    command: ["sh", "-c", "while true; do date >> /vol/date.log; sleep 1; done"]  
    volumeMounts:                                                                 
    - name: vol                                                                   
      mountPath: /vol                                                             
  - image: busybox:latest
    name: c3                                                                      
    command: ["sh", "-c", "tail -f /vol/date.log"]                                
    volumeMounts:                                                                 
    - name: vol                                                                   
      mountPath: /vol                                                             
  volumes:                                                                        
    - name: vol                                                                   
      emptyDir: {}

이제 해당 pod를 생성하고 c1과 c3 컨테이너를 조회하여 각각 결과를 확인한다.

### pod 생성
kubectl apply -f pod.yaml

### pod 생성 확인
kubectl get po -n test-namespace test-multi-container
NAME                   READY   STATUS    RESTARTS   AGE
test-multi-container   3/3     Running   0          19s

### c1 컨테이너의 환경 변수 확인
kubectl exec -n test-namespace test-multi-container -c c1 -- env | grep MY
MY_NODE_NAME=worker2

### c3 컨테이너의 로그 확인
kubectl logs -n test-namespace test-multi-container -c c3
Fri May  6 02:59:11 UTC 2022
Fri May  6 02:59:12 UTC 2022
Fri May  6 02:59:13 UTC 2022
Fri May  6 02:59:14 UTC 2022
Fri May  6 02:59:15 UTC 2022
...

댓글