728x90
volume 관리
컨테이너 내의 디스크에 있는 파일은 임시적이며 컨테이너에서 실행될 때 애플리케이션에 적지 않은 몇가지 문제가 발생합니다. 한 가지 문제는 컨테이너가 크래시 될 때 파일이 손실 된다는 것임. kubelet은 컨테이너를 다시 시작하지만 초기화된 상태! 두번째 문제는 pod에서 같이 실행되는 컨테이너 간에 파일을 공유할 때 발생합니다. 파드는 여러 볼륨 유형을 동시에 사용할 수 있다. 임시 볼륨 유형은 파드의 수명을 갖지만, 퍼시스턴트 볼륨은 파드의 수명을 넘어 존재합니다. |
파드 안에 컨테이너가 있고.
컨테이너 안쪽에 디스크 공간이 있음.
쿠버네티스 저장소라는게 컨테이너 안쪽에 있을 수도 바깥쪽에 있을 수도 있다. (=파드 안/팎에 있을 수 있다.)
그래서 컨테이너/파드가 지워지더라도 데이터가 남아질 수 있도록 [바깥쪽 = 노드]에 두자고 함.
외부에 다른 인스턴스를 만들어서 NFS Server에 데이터를 두는 방식!
pvc에서 c는 claim=요청!
파드가 디스크가 공간이 필요한데 그 공간을 pv로 꾸미고 싶을 경우.
외부에 pv라는 공간을 만들고 중간에 pvc라는 연결매체를 만들어서 컨테이너와 바깥쪽 pv와 연결한다.
실습해보자.
--- Volume
- pv/pvc
# vi pv-pvc-pod.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: task-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity: #pv의 디스크공간
storage: 10Mi
accessModes:
- ReadWriteOnce #1개의 컨테이너에 1개의 pod만 붙을 수 있도록.
hostPath:
path: "/mnt/data" #pv가 저장될 공간 (컨테이너 안의 내용을 저장하겠다.)
---
apiVersion: v1
kind: PersistentVolumeClaim #pvc 이름
metadata:
name: task-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce #pv와 pvc가 위와 동일하게 해서 위와 연결되었다고 생각하면 됨
resources:
requests:
storage: 1Mi #전체 10Mi 중에서 1Mi만 사용하겠다는 뜻.
selector: #그렇다면 어느 PV?
matchLabels: #위의 PV의 라벨 부분을 보았더니 type:local을 찾고있으니 아래도 동일하게 매치시킴
type: local
---
apiVersion: v1
kind: Pod
metadata:
name: task-pv-pod
labels:
app: task-pv-pod
spec:
volumes:
- name: task-pv-storage
persistentVolumeClaim: #앞서 만들어둔 claim의 이름을 넣어줘용
claimName: task-pv-claim
containers:
- name: task-pv-container
image: nginx
ports:
- containerPort: 80
name: "http-server"
volumeMounts:
- mountPath: "/usr/share/nginx/html" #마운트정보임; 컨테이너 안쪽의 경로에 index.html이 위치하는 폴더
name: task-pv-storage #위에서 정의한 볼륨이름 넣어주기
# kubectl apply -f pv-pvc-pod.yaml
pv는 /mnt/data(원래 데이터 정보가 없는 디렉토리임)에
pvc는 tast-pv-claim이름으로 만들고 보안상의 이유로 하나의 컨테이너에 하나의 pod만 붙을 수 있도록 하구
pod는 /usr/share/nginx/html의 경로에 볼륨 마운트
bound = 연결되었다는 의미임.
bound 전에는 available이었다.
방금 배포한 파드가 worker1에 위치함.
worker1에 가서 확인해보자!
ls /mnt
echo "HELLO" > /mnt/data/index.html
마스터 노드가서 확인해봄!
내가 기록한 내용이 보여짐!
728x90
'Kubernetes' 카테고리의 다른 글
쿠버네티스-ConfigMap (0) | 2024.02.19 |
---|---|
쿠버네티스 - GCP에서 이미지를 띄워서 쿠버네티스 해보기 (pv정적프로비저닝) (0) | 2024.02.19 |
쿠버네티스- MetalLB (0) | 2024.02.19 |
쿠버네티스 3 (0) | 2024.02.05 |
쿠버네티스 2 (0) | 2024.02.02 |