Usar um Volume de Imagem com um Pod
Kubernetes v1.36 [stable](habilitado por padrão)Esta página mostra como configurar um pod usando volumes de imagem. Isso permite que você monte conteúdo de registros OCI dentro de contêineres.
Antes de você começar
Você precisa ter um cluster do Kubernetes e a ferramenta de linha de comando kubectl deve estar configurada para se comunicar com seu cluster. É recomendado executar esse tutorial em um cluster com pelo menos dois nós que não estejam atuando como hosts de camada de gerenciamento. Se você ainda não possui um cluster, pode criar um usando o minikube ou pode usar um dos seguintes ambientes:
O seu servidor Kubernetes deve estar numa versão igual ou superior a v1.31.Para verificar a versão, digite kubectl version.
- O agente de execução de contêiner precisa suportar a funcionalidade de volumes de imagem
- Você precisa executar comandos no host
- Você precisa ser capaz de executar comandos dentro dos pods
Executar um Pod que usa um volume de imagem
Um volume de imagem para um pod é habilitado definindo o campo volumes[*].image de .spec
como uma referência válida e consumindo-o nos volumeMounts do contêiner. Por exemplo:
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
Crie o pod no seu cluster:
kubectl apply -f https://k8s.io/examples/pods/image-volumes.yamlAcesse o contêiner:
kubectl exec image-volume -it -- bashVerifique o conteúdo de um arquivo no volume:
cat /volume/dir/fileA saída é semelhante a:
1Você também pode verificar outro arquivo em um caminho diferente:
cat /volume/fileA saída é semelhante a:
2
Usar subPath (ou subPathExpr)
É possível utilizar
subPath ou
subPathExpr
a partir do Kubernetes v1.33 ao usar a funcionalidade de volumes de imagem.
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
Crie o pod no seu cluster:
kubectl apply -f https://k8s.io/examples/pods/image-volumes-subpath.yamlAcesse o contêiner:
kubectl exec image-volume -it -- bashVerifique o conteúdo do arquivo a partir do subdiretório
dirno volume:cat /volume/fileA saída é semelhante a:
1