파드와 함께 이미지 볼륨 사용하기
파드와 함께 이미지 볼륨 사용하기 (Use an Image Volume With a Pod)
기능 상태: Kubernetes v1.36부터 Stable; 기본적으로 활성화. 이것은 쿠버네티스의 안정적인 기능이며 1.36부터 그랬어요. 처음에는 v1.31 릴리스에서 사용할 수 있었어요.
이 페이지는 이미지 볼륨을 사용해 파드를 구성하는 방법을 보여드려요. 이를 통해 OCI 레지스트리의 콘텐츠를 컨테이너 안에 마운트할 수 있어요.
출처: 문서
본문
시작하기 전에 (Before you begin)
쿠버네티스 클러스터가 필요하고, kubectl 명령줄 도구가 클러스터와 통신하도록 구성돼 있어야 해요. 이 튜토리얼은 컨트롤 플레인 호스트가 아닌 노드가 두 개 이상 있는 클러스터에서 실행하는 것을 권장해요. 아직 클러스터가 없다면 minikube로 만들거나 다음 쿠버네티스 플레이그라운드 중 하나를 사용할 수 있어요.
- iximiuz Labs
- Killercoda
- KodeKloud
쿠버네티스 서버가 최소 v1.31 버전이어야 해요. 버전을 확인하려면 kubectl version을 입력하세요.
- 컨테이너 런타임이 이미지 볼륨 기능을 지원해야 해요
- 호스트에서 명령을 실행할 수 있어야 해요
- 파드에 exec할 수 있어야 해요
이미지 볼륨을 사용하는 Pod 실행하기 (Run a Pod that uses an image volume)
파드의 이미지 볼륨은 .spec의 volumes[*].image 필드를 유효한 참조로 설정하고 컨테이너의 volumeMounts에서 소비함으로써 활성화돼요. 예를 들어:
apiVersion: v1
kind: Pod
metadata:
name: image-volume
spec:
containers:
- name: shell
command: ["sleep", "infinity"]
image: debian
volumeMounts:
- name: volume
mountPath: /volume
volumes:
- name: volume
image:
reference: quay.io/crio/artifact:v2
pullPolicy: IfNotPresent
pods/image-volumes.yaml — 클러스터에 파드를 생성해요.
kubectl apply -f https://k8s.io/examples/pods/image-volumes.yaml
컨테이너에 접속해요.
kubectl exec image-volume -it -- bash
볼륨의 파일 콘텐츠를 확인해요.
cat /volume/dir/file
출력은 다음과 비슷해요.
1
다른 경로의 다른 파일도 확인할 수 있어요.
cat /volume/file
출력은 다음과 비슷해요.
2
subPath(또는 subPathExpr) 사용하기 (Use subPath (or subPathExpr))
이미지 볼륨 기능을 사용할 때 Kubernetes v1.33부터 subPath 또는 subPathExpr를 활용할 수 있어요.
apiVersion: v1
kind: Pod
metadata:
name: image-volume
spec:
containers:
- name: shell
command: ["sleep", "infinity"]
image: debian
volumeMounts:
- name: volume
mountPath: /volume
subPath: dir
volumes:
- name: volume
image:
reference: quay.io/crio/artifact:v2
pullPolicy: IfNotPresent
이 구성은 볼륨의 dir 하위 디렉터리만 /volume에 마운트해요.
제한 사항 (Limitations)
이미지 참조 형식 (Image reference formats)
image.reference 필드는 레지스트리의 유효하고 완전한 이미지 참조여야 해요. 태그(예: quay.io/crio/artifact:v2)나 다이제스트(예: quay.io/crio/artifact@sha256:...) 기반 참조를 사용할 수 있어요. 최신(latest) 태그는 지원되지 않아요.
다이제스트 변경 (Digest changes)
이미지 볼륨의 콘텐츠는 이미지 다이제스트가 변경되면 업데이트되지 않아요. 이미지 볼륨은 지정된 이미지의 스냅샷이며, 볼륨과 함께 파드가 재생성될 때까지 유지돼요.
런타임 특정 지원 (Runtime-specific support)
이미지 볼륨 기능은 컨테이너 런타임이 지원해야 해요. 런타임이 이 기능을 지원하지 않으면 파드가 시작되지 못할 수 있어요.