deployment replicas 가 노드 수 만큼 정해져 있는 형태, x = 1 -> 노드 x개 = 파드 x개
노드의 단일 접속 지점으로 노드 외부와 통신하는 경우, 파드가 1개 이상 불 필요
설정을 목적으로 사용하는 오브젝트
파드에서 생성한 내용 기록, 동일한 설정 값을 유지하고 관리 와 같은 목적에 의한 볼륨
쿠버네티스는 PVC 를 요청하여 사용하려면 PV로 볼륨을 선언 해야한다
PV : 볼륨을 사용할 수 있도록 준비하는 단계
PVC : 준비된 볼륨에서 일정 공간을 할당받는 것
볼륨 타입 : 임시, 로컬, 원격, 특수 목적, 클라우드 ...
mkdir [folder path + folder name]
해당 폴더를 NFS 로 받아들일 IP 영역, 옵션(폴더권한,동기화,등...)
ip 와 option 사이에 공백 없이 입력되어야 함
echo '[folder path + folder name] ip + option' >> /etc/exports
enable --now : 설정 + 활성화(start + enable 과 같음)
systemctl enable --now nfs
PV 실행(오브젝트 스펙) : kubectl apply -f [PV file path]
spec - capacity - storage : 용량 제한 x, 사용할 수 있는 용량을 레이블로 붙이는 형태
spec - accessModes : PV 를 어떤 방식으로 사용할지 정의
spec - accessModes - ReadWriteMany : 여러 개의 노드가 읽고 쓸 수 있도록 마운트
ㄴ ReadWriteOne : 하나의 노드에서 읽고 쓰기, ReadOnlyMany : 여러 개의 노드가 읽기
spec - persistentVolumeReclaimPolicy: PV 제거 시 작동하는 방법 정의
ㄴ Retain : 유지, Delete : 삭제, Recycle : (재활용, Deprecated)
spec -nfs : NFS 서버 연결 위치 설정
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv
spec:
capacity:
storage: 100Mi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
nfs:
server: [ip address]
path: [folder name]
PV - PVC 오브젝트 스펙은 거의 차이가 없다
아래는 생성한 PVC 를 볼륨으로 사용하는 디플로이먼트 오브젝트 스펙을 배포한다
spec - containers - image : audit-trail : 요청 처리 시 접속 정보 로그 기록
spec - containers - volumeMounts : 볼륨이 마운트될 위치 지정
spec - volumes - persistentVolumeClaim : PVC 로 생성된 볼륨을 마운트하기 위해 이름 지정
apiVersion: apps/v1
kind: Deployment
metadata:
name: nfs-pvc-deploy
spec:
replicas: 4
selector:
matchLabels:
app: nfs-pvc-deploy
template:
metadata:
labels:
app: nfs-pvc-deploy
spec:
containers:
- name: audit-trail
image: sysnet4admin/audit-trail
volumeMounts:
- name: nfs-vol
mountPath: /audit
volumes:
- name: nfs-vol
persistentVolumeClaim:
claimName: nfs-pvc