| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- Terraform
- aws outposts
- docker
- 합격 후기
- karpenter
- aews ci/cd
- VPA
- observability
- Python
- POD
- eks endpoint access
- 외부 모듈
- kubernetes
- aews
- aews vault
- Jenkins
- keda
- storageclass
- EKS
- AWS
- 국비지원교육
- 도커
- 클라우드 국비지원교육
- grafana
- k8s
- prometheus
- outposts local cluster
- 단기 합격
- 클라우드 국비지원교육 후기
- 클라우드 엔지니어
- Today
- Total
모험가
Volume (기초) 본문
이 글은 인프런의 대세는 쿠버네티스 강의를 보며 정리한 글입니다
Volume
-> Pod안에 volume이 생성되므로 pod가 망가지면 volume도 날라감 (일시적인 정보만 쓸 것)
1. emptyDir2. hostPath3. PVC / PV
emptyDir : 컨테이너끼리 데이터를 공유하기 위해서 볼륨을 사용하는 것 (최초에는 항상 비어있기에 명칭임)
hostPath : 각 노드의 path를 사용, 즉 pod가 죽어도 volume은 살아있음 but 만약 pod가 죽고 다른 node에 생성이 된다면 이 pod는 volume에 mount가 불가능함
-> Node추가시마다 Mount를 걸어주면 가능은 함
PVC / PV : 외부 volume에 연결하기 위해 만드는데 PV에 바로 연결이 아닌 PVC를 통해 가는게 좋음
* PV : Persistent Volume
PVC : Persistent Volume Claim
Pod -> PVC (여기까지가 User 이며)
PVC -> Volume local (여기는 Admin으로 생각하면 됨)
순서
1. PV 정의 생성
2. PVC 생성
3. PV 연결
4. Pod 생성시 PVC 마운팅
실습
emptyDir
-> 파드가 지워졌다가 다시 생성되면 안의 내용도 지워짐
1.파드 생성
apiVersion: v1
kind: Pod
metadata:
name: pod-volume-1
spec:
containers:
- name: container1
image: kubetm/init
volumeMounts:
- name: empty-dir
mountPath: /mount1
- name: container2
image: kubetm/init
volumeMounts:
- name: empty-dir
mountPath: /mount2
volumes:
- name : empty-dir
emptyDir: {}
2. exec를 통해 컨테이너에서 mount1이 있는지 확인

3. 컨테이너1의 mount1에서 file.txt를 만든 후 컨테이너2의 mount2에도 있는지 확인

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
hostPath
-> 파드가 생성되는 노드를 지정하지 않으면 volume에 mount가 안됨 (일일이 만들 수 있는 방법도 있긴 함)
1. 파드 생성 (2개 2,3)
apiVersion: v1
kind: Pod
metadata:
name: pod-volume-3
spec:
nodeSelector:
kubernetes.io/hostname: k8s-node1
containers:
- name: container
image: kubetm/init
volumeMounts:
- name: host-path
mountPath: /mount1
volumes:
- name : host-path
hostPath:
path: /node-v
type: DirectoryOrCreate

이 파드들은 node-v라는 볼륨을 공유하고 있음
2. pod2에서 file.txt를 생성 후 pod3에서 공유 되어있는 것을 확인 함

3. node1에서 node-v가 생성되었는지 확인

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
PVC / PV
1. PV 3개 생성 (1,2,3)
1은 1G Write
2은 1G ReadOnlyMany
3은 2G Write
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-03
spec:
capacity:
storage: 2G
accessModes:
- ReadWriteOnce
local:
path: /node-v
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- {key: kubernetes.io/hostname, operator: In, values: [k8s-node1]}

2. PVC 3개 생성
1은 1G Write
2은 1G ReadOnlyMany
3은 3G Write
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-01
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1G
storageClassName: ""
3. 자동으로 PV에 연결이 됨
3은 스토리지가 안 맞기에 연결이 안됨
(더 적은 1G로 하면 연결이 되긴 함 즉 더 높으면은 안됨)

4. Pod 생성시 PVC 마운팅
apiVersion: v1
kind: Pod
metadata:
name: pod-volume-3
spec:
containers:
- name: container
image: kubetm/init
volumeMounts:
- name: pvc-pv
mountPath: /mount3
volumes:
- name : pvc-pv
persistentVolumeClaim:
claimName: pvc-01
5. exec로 들어가서 hostPath로 만든 파일이 있는지 확인

'쿠버네티스 > 기초' 카테고리의 다른 글
| Namespace, ResourceQuota, LimitRange (기초) (0) | 2022.08.05 |
|---|---|
| ConfigMap, Secret (기초) (0) | 2022.08.05 |
| Service (기초) (0) | 2022.07.28 |
| POD (기초) (0) | 2022.07.28 |
| kubernetes 설치 (0) | 2022.07.27 |