-
[Kubernetes] PV, PVC 간단 정리, MySQL 띄워보기Engineering/DevOps 2022. 3. 13. 16:32반응형
컨테이너의 특징
- 컨테이너 내의 디스크에 있는 파일들은 임시적이다. 즉, 컨테이너가 터미네이트되고 다시 시작되면 내부의 상태는 초기화가 된 상태이다.
- 파드 내에서 같이 실행되는 컨테이너간에 파일 공유가 어렵다.
PV (Persistent Volume)
- PV 는 볼륨 자체를 의미하며, 클러스터 내에서 리소스로 다뤄진다.
- 쿠버네티스에서는 다양한 볼륨을 지원한다.
- AWS EBS, Azure Disk, NFS 등..
- 파드는 PV에 직접 연결하는 것이 아니라 PVC를 통해서 볼륨 마운트를 한다.
- 이러한 추상화 덕분에 파드는 어떤 스토리지를 사용하는지 고려하지 않아도 된다.
ex)
apiVersion: v1 kind: PersistentVolume metadata: name: mysql-pv-volume labels: name: mysql spec: storageClassName: manual capacity: storage: 5Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain hostPath: path: "/mnt/mysql"
- 생성 초기에는 Status 가 Available 상태인 것을 확인할 수 있다. 이는 아직 pvc 가 바인딩되지 않았다는 뜻이다.
PVC (Persistent Volume Claim)
- 파드는 PVC를 이용하여 물리적인 스토리지를 요청한다.
- 컨트롤 플레인은 동일한 스토리지 클래스를 갖는 적절한 PV를 찾으면 PV에 PVC를 바인딩한다.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pvc-claim spec: storageClassName: manual accessModes: - ReadWriteOnce resources: requests: storage: 5Gi
- PVC를 생성하고 나서 컨트롤 플레인에 의해 자동으로 바인딩 되어 Status가 Bound 로 변경된 걸 확인할 수 있다.
Statefulset 으로 MySQL 파드 생성
apiVersion: apps/v1 kind: StatefulSet metadata: name: mysql spec: selector: matchLabels: app: mysql serviceName: mysql replicas: 1 template: metadata: labels: app: mysql spec: terminationGracePeriodSeconds: 10 containers: - name: mysql image: mysql:8.0.28 env: - name: MYSQL_ROOT_PASSWORD value: "1234" ports: - containerPort: 3306 name: mysql volumeMounts: - mountPath: /var/lib/mysql name: mysql-persistent-storage volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pvc-claim
- LoadBalancer 타입으로 Service 오브젝트 생성
apiVersion: v1 kind: Service metadata: name: mysql-svc labels: app: mysql spec: ports: - name: mysql port: 3306 selector: app: mysql type: LoadBalancer
반응형'Engineering > DevOps' 카테고리의 다른 글
[Kubernetes] 배포 간편화 도구, Taints, Tolerations, RBAC (0) 2022.02.01 [Kubernetes] 도커와 컨테이너 (0) 2022.01.30 [Kubernetes] 쿠버네티스 클러스터와 외부 네트워크 (0) 2022.01.23 [Kubernetes] 쿠버네티스 이해하기 (0) 2022.01.15 [AWS] VPC에 대해 알아보기 (0) 2020.07.21