Criei PV, PVC e adicionei esse PVC ao POD.
Problema/Pergunta: Ao adicionar PVC (no meu entendimento) é como anexar armazenamento externo/adicional. No entanto, quando me conecto ao POD, não vejo nenhum sistema de arquivos adicional. Por que?
kubectl exec -it pod1 -- bash
root@pod1:/# df -Th
Filesystem Type Size Used Avail Use% Mounted on
overlay overlay 31G 5.9G 23G 21% /
tmpfs tmpfs 64M 0 64M 0% /dev
shm tmpfs 64M 0 64M 0% /dev/shm
tmpfs tmpfs 197M 2.0M 195M 2% /etc/hostname
/dev/mapper/ubuntu--vg-ubuntu--lv ext4 31G 5.9G 23G 21% /etc/hosts
tmpfs tmpfs 1.9G 12K 1.9G 1% /run/secrets/kubernetes.io/serviceaccount
tmpfs tmpfs 983M 0 983M 0% /proc/acpi
tmpfs tmpfs 983M 0 983M 0% /proc/scsi
tmpfs tmpfs 983M 0 983M 0% /sys/firmware
Passos para reproduzir:
$ kubectl apply -f pv1.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv1
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
claimRef:
namespace: default
name: pvc1-volume
hostPath:
path: "/opt/storage"
kubectl get pv -o wide
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE VOLUMEMODE
pv1 1Gi RWO Retain Available default/pvc1-volume manual 4s Filesystem
$ kubectl apply -f pvc1.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc1-volume
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Mi
$ kubectl apply -f pvc1.yaml
persistentvolumeclaim/pvc1-volume created
$ kubectl get pvc -o wide
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE VOLUMEMODE
pvc1-volume Bound pv1 1Gi RWO manual 8s Filesystem
kubectl apply -f pod1.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod1
spec:
volumes:
- name: task-pv-storage
persistentVolumeClaim:
claimName: pvc1-volume
containers:
- name: nginx
image: nginx:1.16
ports:
- containerPort: 80
name: "http-server"
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: task-pv-storage
kubectl get po
NAME READY STATUS RESTARTS AGE
pod1 1/1 Running 0 28s
Ao criar um PersistentVolume (PV) usando o
hostPath
tipo, você está essencialmente apontando para um diretório no host (o nó de trabalho onde seu pod está agendado) como o local de armazenamento. No seu caso, você especificou/opt/storage
no host.Quando você anexa esse PV ao seu pod por meio de um PersistentVolumeClaim (PVC) e o monta em um caminho específico dentro do seu contêiner (neste caso,
/usr/share/nginx/html
), o diretório no host (/opt/storage
) é montado dentro do contêiner nesse caminho.Mas agora, da perspectiva do kernel, esta montagem não está criando um novo sistema de arquivos; em vez disso, faz parte do mesmo FS, o que significa que simplesmente disponibiliza um diretório do sistema de arquivos do host dentro do contêiner. Como resultado, ao executar o
df -Th
comando dentro do contêiner, você não verá um novo sistema de arquivos listado para/usr/share/nginx/html
. Em vez disso, esse diretório é tratado como parte do sistema de arquivos existente já montado no contêiner (provavelmente no tipo de sobreposição, conforme indicado na saída do df).