k8s에 배포한 애플리케이션이 데이터를 보존하기 위해서는 내부 혹은 외부의 스토리지 시스템과 연결하여 퍼시스턴트 볼륨을 이용해야 한다.
여기서 데이터 보존이란 데이터의 분실, 파손, 잘못된 변경 등을 막는 것을 말한다. 데이터 분실은 조작 실수, 해킹, 디스크 고장, 프로그램의 예외나 에러, 비정상 종료, 데드락 등에 의해 발생한다.
외부 스토리지 시스템을 사용하면 여러 개의 물리적인 장비를 묶어 단일 장애점을 극복하고 가용성을 높여 데이터 자산의 분실을 방지할 수 있다. 외부 스토리지 시스템을 사용하는 방법으로는 전용 스토리지 장비를 사용하는 경우와 소프트웨어로 일반적인 서버를 클러스터화하여 저장장치로 사용하는 SDS, 그리고 이 둘을 조합한 방법이 있다.
‘퍼시스턴트 볼륨’에서 ‘퍼시스턴트'란 컨테이너나 파드가 종료되어도 데이터는 분실하지 않는 것을 의미한다. 그리고 ‘볼륨'은 외부 스토리지의 논리적인 볼륨을 컨테이너에 마운트하는 것을 의미한다.
스토리지의 종류와 클러스터 구성
외부 스토리지 시스템을 연동하면 데이터를 보다 안정적으로 보존하는 것이 가능하다. 한편, 클러스터 내부에서 빠르게 읽고 쓸 수 있는 볼륨을 사용하는 것도 가능하다.
노드 내부에서 간단하게 사용할 수 있는 볼륨으로는 emptyDir과 hostPath가 있다.
emptyDir은 노드의 디스크를 파드가 일시적으로 사용하는 방법으로, 같은 파드의 컨테이너 간에는 볼륨을 공유할 수 있으나 다른 파드에서는 접글할 수 없다. 그리고 파드가 종료하면 emptyDir은 삭제된다.
hostDir은 동일하게 노드의 디스크를 사용하지만, 같은 노드에 배포된 서로 다른 파드에서 볼륨을 공유할 수 있다. hostPath는 파드와 함께 지워지진 않지만 각 노드의 디스크를 사용하기 때문에 다른 노드에 배포된 파드 간에 데이터를 공유할 수 없다. 그리고 노드가 정지하게 되면 데이터에 접근할 수 없게 되므로 hostpath는 외부 스토리지가 아직 준비 중인 상황에서 간단하게 사용하는 용도 수준으로 봐야한다.
Loading Comments...