본문 바로가기
Kubernetes

Kubernetes: 스토리지/네트워크

by SE_123 2023. 8. 10.

01.스토리지 for Kubernetes

쿠버네티스에서 스토리지는 컨테이너와 파드 간의 데이터를 관리하고 영속성을 제공하는 중요한 측면입니다. 쿠버네티스는 다양한 스토리지 옵션을 제공합니다.

 

1) Temp Storage: emptyDir

emptyDir: Pod 생성시 기본적으로 설치되는 볼륨(해당 pod 볼륨)

  • pod가 삭제되면 바로 같이 삭제
  • 일시적 사용에 적절
  • 동일한 pod 내 container 간 파일 공유가 가능

2) Local Storage: hostPath, Local

hostPath: node에 설치되는 볼륨(해당 node 볼륨)

  • 같은 node를 공유하는 pod끼리 공유가 가능
  • pod가 삭제되어도 hostPath의 데이터는 삭제되지 않음(← 파일 시스템에 있는 파일이나 디렉터리를 마운트하기 때문)
  • pod가 다른 node로 스케줄링되면 이전 데이터를 볼 수 없음
cat <<EOT> hostpath.yaml
apiVersion: v1
kind: Pod
metadata:
  name: hostpath-pod
spec:
  terminationGracePeriodSeconds: 3
  nodeSelector:
    kubernetes.io/hostname: k8s-w1
  containers:
    - name: my-container
      image: busybox
      args: [ "tail", "-f", "/dev/null" ]
      volumeMounts:
      - name: hostpath-volume
        mountPath: /doik-pod-v
  volumes:
    - name: hostpath-volume
      hostPath:
        path: /doik-v
        type: DirectoryOrCreate
EOT

Local: 디스크, 파티션, 디렉터리 같은 마운트된 로컬 스토리지 장치

  • Static Provisioning으로 생성된 PV으로만 사용할 수 있다. (Dynamic Provisioning 지원 불가

PV의 nodeAffinity를 확인

3) PV / PVC

PV(Persistent Volume) : 스토리지

  • NFS, 퍼블릭클라우드의 스토리지 서비스 등의 다양한 볼륨 형태를 PV로 등록하여 사용 가능(← admin이 지정)
  • 프로비저닝 방식
    • Static Provisioning: 클러스터 관리자가 프로비저닝*(PVC가 직접적으로 PV를 바라 봄)*
    • Dynamic Provisioning: Storage Class를 사용하여 동적으로 프로비저닝*(PVC가 StorageClass를 바라 봄)*

PVC(Persistent Volume Claim):사용자의 스토리지(PV)에 대한 요청

  • pod는 node 리소스를 사용하고 PVC는 PV 리소스를 사용
  • pod가 다른 node로 스케줄링된 경우에도 동일한 데이터를 사용 가능

4) Volume 성능측정: kubestr

kubestr: 자동으로 *pv, pod를 생성하여 **성능 측정(*그 후에는 알아서 리소스 삭제)

  • 현재 Storage Class에 대한 configuration 검증
  • 현재 Storage Class가 뭐가 있으며, 문제는 없는지 간략하게 확인 가능

 

02. 네트워크 for Kubernetes

쿠버네티스에서의 네트워킹은 파드, 서비스 및 외부 네트워크 간의 통신을 의미합니다. 쿠버네티스는 다음과 같은 네트워킹 구성 요소를 제공합니다

서비스: Service

pod를 외부로 노출시키려면 service를 이용(기본적으로 pod를 생성하면 클러스터 내부에서만 소통이 가능)

  • Cluster Type : 다수의 파드에 접속할 수 있는 Pod-LB역할을 하는 service를 생성
  • NodePort Type : 실제 외부 클라이언트가 클러스터 내부로 접속할 수 있도록 하는 서비스
반응형