--- 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 # 디렉토리 없을때 생성
--- 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에 입력한 라벨을 매칭해서 볼륨과 연결
--- 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
pv생성시 입력한 path경로에 디렉토리 있는것 확인.
해당 디렉토리에 index.html파일 작성.
<html> <body> nginx main page<br> this is node 1 <!-- 워커노드에 따라 구분되게 넣어줌--> </body> </html>
서비스를 열어놨으니 브라우저로도 접근해 본다.
접근하는 워커노트에 따라 내용이 바뀌는걸 확인.