볼륨
컨테이너는 기본적으로 상태가 없는 앱 컨테이너를 사용한다.
상태가 없다는 것은 컨테이너에 문제가 있거나, 노드에 장애가 발생해서 컨테이너를 새로 실행했을 때 다른 노드로 자류옵게 옮길 수 있다는 뜻이다.
이것이 컨테이너의 장점이다.
하지만 어떤 이유로든 컨테이너가 실행되지 않거나 삭제되었을 때 현재까지 저장한 데이터가 사라진다는 단점이 있다.
앱의 특성에 따라서 컨테이너에 문제가 생기더라도 데이터를 보존해야 할 때가 있다.
대표적 수단으로 데이터를 파일로 저장한느 젠킨스가 있다.
MySQL 같은 데이터베이스도 컨테이너를 종료하거나 재시작했더라도 데이터가 사라지면 안된다.
이런 상황에서 볼륨을 사용한다.
볼륨을 사용하면 컨테이너를 재시작하더라도 데이터를 유지한다.
퍼시스턴트 볼륨을 사용하면 데이터를 저장했던 노드가 아닌 다른 노드에서 컨테이너를 재시작하더라도 데이터를 저장한 볼륨을 그대로 사용할 수 있도록 한다.
볼륨이나 퍼시스턴트 볼륨을 사용하면 단순히 서버 하나에서 데이터를 저장해 사용하는 것보다 안정적으로 서비스를 운영할 수 있다.
볼륨 관련 필드 중 .spec.container.volumeMounts.mountPropagation가 있다.
파드 하나 안에 있는 컨테이너들끼리 또는 같은 노드에 실행된 파드들끼리 볼륨을 공유해서 사용할지를 설정한다.
필드 값으로는 다음 세 가지를 사용할 수 있다.
- None: 이 필드 값으로 볼륨을 마운트 했으면, 호스트에서 볼륨에 해당하는 디렉터리 하위에 마운트한 다른 마운트들은 볼 수 없다. 컨테이너가 만들어 놓은 마운트를 호스트에서 볼 수도 없다. 기본 필드 값이다.
- HostToContainer: 이 필드 값으로 볼륨을 마운트했으면 호스트에서 해당 볼륨 하위에 마운트된 다른 디렉터리들도 해당 볼륨에서 볼 수 있도록 한다.
- Bidirectional: 이 필드 값으로 볼륨을 마운트했으면 HostToContainer처럼 하위에 마운트된 디렉터리도 볼 수 있고, 호스트 안 다른 모든 컨테이너나 파드에서 같은 볼륨을 사용할 수 있다.
'클라우드 > Kubernetes(쿠버네티스)' 카테고리의 다른 글
[kubernetes] endpoints (0) | 2021.09.11 |
---|---|
[kubernetes] dnsutils, nslookup (0) | 2021.09.08 |
[kubernetes] 파드 스케줄링 (0) | 2021.08.23 |
[kubernetes] 사용자 권한 (keycloak) (0) | 2021.07.25 |
[kubernetes] Jenkins vs Jenkins X (0) | 2021.07.25 |