注:本文档不包含NFS服务器的安装教程(ubuntu和centos安装方式有细微区别,故不在本文赘述,本文重点在StorageClass动态制备的使用)

本次实验的架构图

本次实验的架构图

本次实验用StorageClass给nginx挂载上目录,并在里面添加一个index.html,index.html只有以下内容

<h1>hello</h1>

 
 

安装NFS制备器驱动

 
在使用StorageClass之前,要先准备制备器驱动
NFS制备器驱动安装看官网https://github.com/kubernetes-csi/csi-driver-nfs#readme
驱动安装文档安装文档

驱动安装之后应该有以下pod

NFS制备器相关POD

安装好之后可以按以下配置文件创建StorageClass

 
以下涉及4个资源需要创建

  • StorageClass
  • PersistentVolumeClaim
  • Pod
  • Service

StorageClass

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: example-nfs
provisioner: nfs.csi.k8s.io #制备器名
parameters:
  server: 192.168.204.15 #nfs服务器地址
  share: /nfsroot #nfs路径
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
mountOptions:
- nfsvers=4.1

PersistentVolumeClaim

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: example-nfs-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: example-nfs #对应前面sc的名字
  resources:
    requests:
      storage: 10Mi

Pod

apiVersion: v1
kind: Pod
metadata:
  name: example-nfs-pod
  labels:
    app: mynginx
spec:
  containers:
    - name: nginx-container
      image: nginx:latest
      ports:
        - containerPort: 80
      volumeMounts:
        - name: nfs-volume
          mountPath: /usr/share/nginx/html
  volumes:
    - name: nfs-volume
      persistentVolumeClaim:
        claimName: example-nfs-pvc

Service

apiVersion: v1
kind: Service
metadata:
  name: mynginx
  namespace: default
spec:
  selector:
    app: mynginx
  type: NodePort
  ports:
  - name: mynginx
    protocol: TCP
    port: 80
    targetPort: 80

 
 

实验结果验证

sc状态

sc状态
 
 

pvc状态

pvc状态
 
 

PV状态

PV状态
 
 

nfs目录

nfs目录
 
 

pod状态

测试pod状态
 
 
测试pod状态

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐