Volume mount, Volume mount - hostPath

장동민·2022년 8월 2일
0

CKA 자격증 준비

목록 보기
11/13

1. Kubernetes Volume

  • Volume은 kubernetes 스토리지의 추상화 개념

  • 컨테이너는 Pod에 바인딩 되는 볼륨을 마운트하고 마치 로컬 파일 시스템에 있는 것처럼 스토리지에 접근

  • Kubernetes 스토리지

volumes:
- name: html
  hostPath:
    path: /hostdir_or_file
# 컨테이너 단위로 mount
volumeMounts:
- name: html
  mountPath: /webdata

2. Volume type

  • emptyDir

  • Hostpath

  • gitRepo

  • nfs

  • gcePersistentDisk, awsElastic-BlockStore, azureDisk

  • cinder, cephfs, iscsi, flocker, glusterfs, quobyte, rbd, flexVolume, vsphere-volume, photonPersistentDisk, scaleIO

  • configMap, secret, downwardAPI

  • persistentVolumeClaim


3. Volume을 통해 컨테이너 간 데이터 공유

  • emptyDir 볼륨은 빈 디렉토리로 시작

  • Pod 내부에서 실행중인 애플리케이션은 필요한 모든 파일을 작성

  • Pod를 삭제하면 볼륨의 내용이 손실됨

  • 동일한 Pod에서 실행되는 컨테이너 간에 파일을 공유할 때 유용


※ 문제1: emptyDir Volume을 공유하는 multi-pod운영

(참고 URL : https://kubernetes.io/docs/concepts/storage/volumes/#emptydir
https://kubernetes.io/docs/concepts/cluster-administration/logging/#sidecar-container-with-logging-agent)

  • 다음 조건에 맞춰서 nginx 웹서버 pod가 생성한 로그파일을 받아서 STDOUT으로 출력하는 busybox 컨테이너를 운영하시오.
  • Pod Name: weblog
  • Web container:
    • Image: nginx:1.17
    • Volume mount : /var/log/nginx
    • readwrite
  • Log container:
    • Image: busybox
    • Command: /bin/sh, -c, "tail -n+1 -f /data/access.log"
    • Volume mount : /data
    • readonly
  • emptyDir 볼륨을 통한 데이터 공유

  1. Pod 생성하는 yaml 파일 생성 및 yaml 파일 편집 실행

  1. volumeMounts 옵션 및 volumes 옵션 추가하여 yaml 파일 작성 및 저장

  1. 수정한 yaml 파일 apply

  1. weblog pod describe 명령으로 조회

5-1. weblog pod의 IP 확인

5-2. worker노드로 접속하여 weblog pod IP로 요청 시 요청에 응답


4. hostPath

  • 노드의 파일시스템의 디렉토리나 파일을 컨테이너에 마운트

  • 노드에 디렉토리나 파일을 생성하여 마운트 가능

  • hostPath는 type 지시어를 이용해 mount 구성의 요구를 추가할 수 있음

# hostPath 예시
volumes:
- name: html
hostPath:
  type: FileOrCreate
  path: /hostdir_or_file
  • hostPath type
    • DirectoryOrCreate : 주어진 경로에 아무것도 없다면, 필요에 따라 kubelet의 소유권, 권한을 0755로 설정한 빈 디렉터리를 생성함
    • Directory : 주어진 경로에 디렉터리가 있어야 함
    • FileOrCreate : 주어진 경로에 아무것도 없다면, 필요에 따라 kubelet의 소유권, 권한을 0755로 설정한 file을 생성
    • File : 주어진 경로에 파일이 있어야 함

※ 문제2: HostPath 볼륨 마운트 설정

(참고 URL : https://kubernetes.io/docs/concepts/storage/volumes/#hostpath)

  • 작업 클러스터 : k8s

  • /data/cka/fluentd.yaml 파일에 다음 조건에 맞게 볼륨 마운트를 설정하시오.

  • Worker node의 도커 컨테이너 디렉토리를 동일 디렉토리로 pod에 마운트 하시오

  • Worker node의 /var/log 디렉토리를 fluentd Pod에 동일이름의 디렉토리로 마운트 하시오.


  1. 작업 클러스터 확인

  1. Worker node의 도커 컨테이너 디렉토리 경로를 파악하기 위해 Worker node에 접속

  1. root 계정으로 로그인하여 도커 컨테이너 디렉토리 경로 조회

  1. /var/log 디렉토리 경로 조회

  1. /data/cka 경로에 fluentd.yaml 파일 생성하여 마운트 관련 옵션 추가하여 작성 및 저장

  1. 작성한 yaml 파일 apply

  1. 생성된 파드 2개 조회

  1. 생성된 파드를 describe 명령으로 mount 확인

profile
나만의 데이터베이스

0개의 댓글