前言
持久化卷(Persistent Volume, PV)允许用户将外部存储映射到集群,而持久化卷申请(Persistent Volume Claim, PVC)则类似于许可证,使有授权的应用(Pod)可以使用PV。
-
持久化卷(Persistent Volume,PV)。
-
持久化卷申请(Persistent Volume Claim,PVC)。
-
存储类(Storage Class,SC)。
概括地说,PV代表的是Kubernetes中的存储;PVC就像许可证,赋予Pod访问PV的权限;sc则使分配过程是动态的。
集群环境
操作系统: Ubuntu 20.04
IP | Hostname | 配置 |
---|---|---|
192.168.254.130 | master01 | 2C 4G 30G |
192.168.254.131 | node01 | 2C 4G 30G |
192.168.254.132 | node02 | 2C 4G 30G |
192.168.254.133 | nfs-tools | 2C 4G 30G |
nfs 环境搭建
安装 nfs
sudo apt-get install -y nfs-kernel-server # 安装 NFS服务器端
sudo apt-get install -y nfs-common # 安装 NFS客户端
nfs服务器端,只在集群中某一台安装即可
创建nfs共享目录
mkdir -p /nfs/share
chmod -R 777 /nfs/share
修改配置 vim /etc/exports
# 当登录NFS主机使用共享目录的使用者是root时,其权限将被转换成为匿名使用者,通常它的UID与GID都会变成nobody身份,添加no_root_squash参数,确保root账户能用
/nfs/share *(rw,sync,no_root_squash) # * 表示允许任何网段 IP 的系统访问该 NFS 目录
配置生效
exportfs -r
exportfs # 查看生效
启动服务
sudo /etc/init.d/nfs-kernel-server restart
mount -t nfs 192.168.254.130:/nfs/share /nfsremote -o nolock
如果提示
mount.nfs: access denied by server while mounting
在服务器端 ``/etc/exports
中加入
insecure`如:
/nfs/share *(insecure,rw,sync,no_root_squash)
实例数据
echo "hello world" > /nfs/share/index.html
pod 挂载 nfs
架构图
pod_nfs.yaml:
apiVersion: v1
kind: Pod
metadata:
name: nfs-testpod
labels:
app: nfs-testpod
spec:
containers:
- name: nfs-testpod
image: nginx
imagePullPolicy: IfNotPresent
securityContext: