Kbernetes(k8s)helm 搭建 PV PVC 动态存储卷

一、集群信息

  • 方法因人而异,但大同小异,以下是我的部署方法。

1.1、 主机信息

主机名 ip地址 描述 核心 内存
node-01 192.168.8.131 master 节点 2核 8G
node-02 192.168.8.132 node 节点 2核 8G
node-03 192.168.8.133 node 节点 2核 8G
node-04 192.168.8.134 node 节点 2核 8G

1.2、版本说明

服务 版本
helm 3.1.1
Kubernetes 1.17.3
nfs-client-provisioner 1.2.9

二、部署 NFS 服务

2.1、 安装 NFS 与 rpcbind 服务

#   创建 NFS 存储目录
mkdir -p /data/NFS
#   安装nfs服务
yum -y install nfs-utils rpcbind
#   修改配置文件
echo "/data/nfs *(rw,sync,no_root_squash,no_subtree_check)" > /etc/exports
#   启动服务
systemctl start nfs && systemctl start rpcbind
#   设置开机启动
systemctl enable nfs-server && systemctl enable rpcbind

2.2、集群节点安装 nfs

  • 重点全部节点都需要安装 nfs-utils 安装了即可不需要配置,否则节点无法挂载 PV
#   安装nfs服务
yum -y install nfs-utils

三、部署 nfs-client-provisioner

3.1、 创建名称空间

  • 创建一个 monitoring 名称空间,将 nfs-client-provisioner 放在这个名称空间上
kubectl create ns nfs

3.2、获取 nfs-client-provisioner

#   下载到本地,默认拉取指定版本
helm pull stable/nfs-client-provisioner  --version 1.2.9
#   解压
tar xvf nfs-client-provisioner-*.tgz
#   将 quay.io 替换为 七牛云镜像
sed -i "s@quay.io@quay-mirror.qiniu.com@g" `grep -rl "quay.io" ./nfs-client-provisioner`

3.3、使用 helm 安装 nfs-client-provisioner

  • nfs.server 参数指定 nfs 服务地址
  • nfs.path 参数指定 nfs 对应目录
  • storageClass.name 用于 pv 与 pvc 绑定名称
  • storageClass.reclaimPolicy 回收策略,默认是删除
  • 安装到 nfs 命名空间
#   安装 nfs-client-provisioner
helm install nfs-storage -n nfs --set nfs.server=192.168.8.131 --set nfs.path=/data/nfs nfs-client-provisioner

#   上面方法就可以了,也可以用下面方法
sed -i "s@server:@server: 192.168.8.131@g" nfs-client-provisioner/values.yaml
sed -i "s@path: /ifs/kubernetes@path: /data@g" nfs-client-provisioner/values.yaml

3.4、查看运行 Pod 状态

[root@Node-01 ~]# kubectl get pod -n nfs
NAME                                                  READY   STATUS    RESTARTS   AGE
nfs-storage-nfs-client-provisioner-56cc787c5b-qwcq8   1/1     Running   0          30s

四、查看动态 PVC

4.1、 创建 PVC

  • storageClassName: "nfs-client" 必须指定为这个,因为 nfs-client-provisioner 就是 nfs-client 名称
  • 如果需要修改,请直接修改 values.yaml 或者安装时候使用 --set storageClass.name=需要的
#   创建 aka-pvc.yaml 测试文件
cat > aka-pvc.yaml << EOF
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: aka-test
spec:
  # 默认是 nfs-client
  storageClassName: "nfs-client"
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
EOF

#   应用配置
kubectl apply -f aka-pvc.yaml

4.2、查看 PV 与 PVC

[root@Node-01 ~]# kubectl get pv,pvc
NAME                                                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                  STORAGECLASS   REASON   AGE
persistentvolume/pvc-e4b50319-6529-4358-8975-bdc5be5faa38   1Gi        RWX            Delete           Bound    default/aka-pvc-test   nfs-client              101s
NAME                                 STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/aka-pvc-test   Bound    pvc-e4b50319-6529-4358-8975-bdc5be5faa38   1Gi        RWX            nfs-client     101s

4.3、查看挂载目录

  • 每创建一个动态 pvc 配置文件,创建成功后都可以在 nfs 目录看到对应内容
[root@Node-01 ~]# ls /data/nfs
default-aka-pvc-test-pvc-e4b50319-6529-4358-8975-bdc5be5faa38

版权声明:
作者:Akiraka
链接:https://www.akiraka.net/kubernetes/407.html
来源:Akiraka
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
Kbernetes(k8s)helm 搭建 PV PVC 动态存储卷
一、集群信息 方法因人而异,但大同小异,以下是我的部署方法。 1.1、 主机信息 主机名 ip地址 描述 核心 内存 node-01 192.168.8.131 master 节点 2……
<<上一篇
下一篇>>
文章目录
关闭
目 录