搭建NFS共享磁盘
# server
sudo yum install -y nfs-utils
sudo systemctl enable --now nfs-server
sudo systemctl enable --now rpcbind
mkdir -p /nfs/exports/myshare # dir that needs to be shared
echo "/nfs/exports/myshare 192.168.122.0/24(rw)" > /etc/exports # client ips
sudo systemctl restart nfs-server
firewall-cmd --add-service nfs --permanent
# client
sudo yum install -y nfs-utils
showmount -e 192.168.1.1 # the server ip
mount -t nfs 192.168.1.1:/nfs/exports/myshare /nfs-client
# pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-nfs
namespace: default
labels:
env: uat
spec:
capacity:
storage: 60Gi
volumeMode: Filesystem
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: ""
nfs:
path: /home/apps/nfs/
server: 192.168.1.1
# pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-nfs
namespace: default
spec:
accessModes: # 访问模式
- ReadWriteMany
volumeMode: Filesystem # 存储卷模式
resources: # 资源请求
requests:
storage: 30Gi
storageClassName: ""
selector:
matchLabels:
env: "uat"
# pod.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-myapp
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
containers:
- name: myapp
image: harbor.neiwang.com/demo/myapp:1.0.2
imagePullPolicy: IfNotPresent
volumeMounts:
- mountPath: /app/log
name: logdir
subPathExpr: myapp/$(POD_NAME) # 使用子目录, 便于定位指定pod的日志
volumes:
- name: logdir
persistentVolumeClaim:
claimName: pvc-nfs
imagePullSecrets: # 从私有harbor仓库拉取镜像需要配置账户信息的secret
- name: registry-harbor
---
apiVersion: v1
kind: Service
metadata:
name: svc-myapp
spec:
selector:
app: myapp
kubectl apply -f pv.yaml
kubectl get pv
kubectl apply -f pvc.yaml
kubectl get pvc
kubectl apply -f pod.yaml
更详细参考