Prepare uma máquina para instalar NFS
#安装nfs-utils
yum -y install NFS-utils
systemctl começar NFS
systemctl habilitar o NFS
# Criar um diretório
mkdir / Data / Volumes -PV
CD / Data / Volumes
mkdir {1,2,3,4,5} V
Compartilhamento de arquivos de configuração
vim / etc / exportações
/ dados / volumes / v1) 192.168.1.0/24(rw,sync,no_root_squash
/ dados / volumes / v2 192.168.1.0/24(rw,sync,no_root_squash)
/ dados / volumes / v3 192.168.1.0 / 24 (rw, sincronização, no_root_squash)
/ dados / volumes / v4 192.168.1.0/24(rw,sync,no_root_squash)
/ dados / volume / v5 192.168.1.0/24(rw,sync,no_root_squash)
# Set remontar o / etc / exportações de
exportfs -arv
# Show Host do / etc / exportação de dados diretório compartilhado
showmount -e
K8S NFS montado em todos os nós do nó
yum a instalação NFS-Y-utils
systemctl NFS Iniciar
systemctl habilitar o NFS
Se NFS teste de funcionamento
mkdir / v1
echo o v1 Teste >> /v1/test.txt
# 192.168.1.190 é NFS host IP
mount -t nfs 192.168.1.190:/data/volumes/v1 / v1
echo o v1 Teste >> / v1 / text.txt
# Nfs nó
/data/volumes/v1/test.txt gato
test.txt no nó nó nó foi sincronizado com NFS, não há problema.
# Desinstalar / diretório v1 no teste nó nó
umount / v1
Criando PersistentVolume, PersistentVolumeClaim, Pod no nó mestre
vim pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv1
labels:
name: pv1
spec:
nfs:
# path 挂载路径
path: /data/volumes/v1
# server nfs机器的ip
server: 192.168.1.190
# ReadWriteOnce能以读写模式被加载到一个节点上
accessModes: ["ReadWriteOnce"]
capacity:
storage: 2Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv2
labels:
name: pv2
spec:
nfs:
path: /data/volumes/v2
server: 192.168.1.190
# ReadOnlyMany以只读模式加载到多个节点上
accessModes: ["ReadOnlyMany"]
capacity:
storage: 5Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv3
labels:
name: pv3
spec:
nfs:
path: /data/volumes/v3
server: 192.168.1.190
# ReadWriteMany以读写模式被加载到多个节点上
accessModes: ["ReadWriteMany", "ReadWriteOnce"]
capacity:
storage: 10Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv4
labels:
name: pv4
spec:
nfs:
path: /data/volumes/v4
server: 192.168.1.190
accessModes: ["ReadWriteMany", "ReadWriteOnce"]
capacity:
storage: 10Gi
vim pod-pvc.yaml
apiVersion: v1
# 存储卷声明
kind: PersistentVolumeClaim
metadata:
name: pvc-myapp
namespace: default
spec:
accessModes: ["ReadWriteMany"]
resources:
requests:
storage: 1Gi
---
apiVersion: v1
kind: Pod
metadata:
name: pod-myapp
namespace: default
spec:
volumes:
- name: html
# 使用pvc-myapp存储卷声明
persistentVolumeClaim:
claimName: pvc-myapp
containers:
- name: myapp
image: ikubernetes/myapp:v1
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
Implantar
kubectl aplicar -f pv.yaml
kubectl aplicar -f pod-pvc.yaml
Ver pv
kubectl get pv
Ver pvc
kubectl get pvc
Use o CP3, NFS nó para o novo /data/volumes/v3/index.html
echo Esta é a home page PV3 >> /data/volumes/v3/index.html
Ver pod
kubectl obter vagens -o ampla
onda 10.244.2.39
O NFS / data / volumes / v3 recipiente pod e / usr / share / nginx / html / Directory Sync
Modificar / usr / share / nginx / html / sincronização para ver se o recipiente pod / data / volumes / v3
Exec -É POD-myapp kubectl - / bin / sh
cd / usr / denunciar essa participação content / nginx / HTML
eco adicionar, modificar index.html >>
eco adicionar arquivos >> new.txt
Disponível para o NFS / data / volumes / v3 para ver se as mudanças sincronizadas.
pod de exclusão, pvc
kubectl excluir -f pod-pvc.yaml
kubectl get pv
Estado PV3 é Lançado
Lançado: estado de liberação, indicando que o PVC PV separação, mas ainda não executou a estratégia de recuperação.
Ou seja, depois de pvc exclusão, pv não pode ser preso com o uso de novas pvc.
PV3 quer usar novamente pode ser alcançado modificando a definição de PV3
editar kubectl PV3 pv
spec.claimRef Delete (o conteúdo da caixa vermelha) para
kubectl get pv
Disponível tornou-se um pv.