쿠버네티스 교육내용 리뷰 - Volume

shJeong19·2023년 7월 26일

kubernetes

목록 보기
7/10

Volume

  • 쿠버네티스의 파드는 생성과 삭제가 일어나면 해당 데이터는 모두 초기화된다.
    그래서 데이터의 보존을 위해 볼륨을 만들어 파드와 매칭해서 파드가 삭제되도 볼륨이 남아있으면 데이터는 보존된다.
  • 볼륨의 종류도 여러가지가 있지만 Persistent volume을 테스트 한다.
    k8s공식문서 볼륨: https://kubernetes.io/ko/docs/concepts/storage/volumes/

1. pv(persistent volume) 생성.

---
kind: PersistentVolume
apiVersion: v1
metadata:
  name: vol-pv
  labels:
    vol: per									# 라벨을 이용해서 pvc와 매칭
spec:
  capacity:
    storage: 1Gi								# 용량, 여기서는 1기가
  volumeMode: Filesystem
  accessModes:
    - ReadWriteMany
  storageClassName: manual
  persistentVolumeReclaimPolicy: Retain
  hostPath:
    path: /pv/volumedir							# 실제 워커노드에 존재하는 디렉토리 지정
    type: DirectoryOrCreate						# 디렉토리 없을때 생성

2. pvc(persistent volume claim) 생성 및 pv와 매칭.

---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: vol-pvc									# pvc이름. 나중에 파드에서 이름으로 매칭한다
spec:
  volumeMode: Filesystem
  storageClassName: manual
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
  selector:
    matchLabels:
      vol: per									# pv에 입력한 라벨을 매칭해서 볼륨과 연결

3. nginx deployment를 생성, pvc와 매칭.

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dep-nginx
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: webserver
          image: nginx
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 80
          volumeMounts:
            - mountPath: /usr/share/nginx/html		# 생성할 파드에서 pv의 path와 매칭할 경로
              name: vol-nginx						# 아래 volumes의 name과 매칭
      volumes:
        - name: vol-nginx
          persistentVolumeClaim:
            claimName: vol-pvc						# pvc작성할때 입력한 name
  selector:
    matchLabels:
      app: nginx
# 여기부터 서비스 배포 부분
---
apiVersion: v1
kind: Service
metadata:
  name: svc-nginx
  labels:
    svc: nginx
spec:
  type: NodePort
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30080
      protocol: TCP
  selector:
    app: nginx

4. nginx의 index.html을 볼륨 디렉토리에 적용했을때 pod에서 확인.

  • pv생성시 입력한 path경로에 디렉토리 있는것 확인.

  • 해당 디렉토리에 index.html파일 작성.

<html>
    <body>
        nginx main page<br>
        this is node 1					<!-- 워커노드에 따라 구분되게 넣어줌-->
    </body>
</html>


  • 서비스를 열어놨으니 브라우저로도 접근해 본다.

  • 접근하는 워커노트에 따라 내용이 바뀌는걸 확인.

profile
Im steady Jeong

0개의 댓글