搭建NFS共享磁盘

主机直接实用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

K8s pod中使用nfs

# 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

更详细参考