当前位置: 首页 > news >正文

k8s使用cifs手动创建pv(windows共享存储)

由于项目需要使用已有的cifs,需要手动创建cifs的pv

在服务器上挂载cifs的命令

yum install cifs-utils -y

mount -t cifs -o   vers=1.0,username=fdcdzh2021,password=Fdcdzh2023 //rdfs.goldwind.com.cn/JJFA /data/api 

新的挂载方式:

mount -t cifs -o   vers=2.0,username=50969,password=Bdyxnjzd0401= //10.1.253.15/jjfa /data/api 

使用nfs不需要安装插件,使用windows的共享文件系统cifs需要安装驱动。kubernetes提供CSI驱动将外部存储提供给pod中使用,我们可以通过CSI驱动对接Samba/CIFS共享文件存储。

github地址https://github.com/kubernetes-csi/csi-driver-smb

1.安装驱动

curl -skSL https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/v1.9.0/deploy/install-driver.sh | bash -s v1.9.0 --

现在这样的安装方式会报错,可以使用拉下代码本地安装的方式

gitclone代码并安装
git clone https://github.com/kubernetes-csi/csi-driver-smb.git
cd csi-driver-smb
git checkout v1.11.0
./deploy/install-driver.sh v1.11.0 local
查看安装进度
kubectl -n kube-system get pod -o wide --watch -l app=csi-smb-controller
kubectl -n kube-system get pod -o wide --watch -l app=csi-smb-node

若镜像被由于墙拉不下来,可以docker search 相关的镜像拉取,然后打tag上传到自己的镜像仓库。安装驱动后就可以使用spec:csi:driver: smb.csi.k8s.io字段了。

 

2.创建cifs的密钥,widonws的共享存储需要认证

kubectl create secret generic smbcreds --from-literal username=USERNAME --from-literal password="PASSWORD"

3.创建pv/pvc

创建pv,其中若建多个cifs  pv需要 volumeHandle: smb-server.default.svc.cluster.local/share## 每次都要不同,可以用share1/2/3等,否则挂载会报错:

mount failed: exit status 32 Mounting command: mount Mounting arguments

apiVersion: v1
kind: PersistentVolume metadata:annotations:pv.kubernetes.io/provisioned-by: smb.csi.k8s.ioname: pv-smb spec:capacity:storage: 100GiaccessModes:- ReadWriteManypersistentVolumeReclaimPolicy: RetainstorageClassName: smbmountOptions:- dir_mode=0777- file_mode=0777
- vers=2.0
csi:driver: smb.csi.k8s.ioreadOnly: false# volumeHandle format: {smb-server-address}#{sub-dir-name}#{share-name}# make sure this value is unique for every share in the clustervolumeHandle: smb-server.default.svc.cluster.local/share4##volumeAttributes:source: "//smb-server-address/sharename"nodeStageSecretRef:name: smbcredsnamespace: default

创建pvc

---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:name: pvc-smb
namespace: wfs-prod spec:accessModes:- ReadWriteManyresources:requests:storage: 10GivolumeName: pv-smbstorageClassName: smb

4.若要使用storage class

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: smb
provisioner: smb.csi.k8s.io
parameters:source: "//smb-server.xxx/share"# if csi.storage.k8s.io/provisioner-secret is provided, will create a sub directory# with PV name under sourcecsi.storage.k8s.io/provisioner-secret-name: "smbcreds"csi.storage.k8s.io/provisioner-secret-namespace: "default"csi.storage.k8s.io/node-stage-secret-name: "smbcreds"csi.storage.k8s.io/node-stage-secret-namespace: "default"
reclaimPolicy: Retain  # available values: Delete, Retain
volumeBindingMode: Immediate
mountOptions:- dir_mode=0777- file_mode=0777- uid=1001- gid=1001

5.将pvc绑定到负载(deployment,pod,daemonset)上

6.遇到的问题

a.报错Input/output error Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmesg)

是因为挂载点有问题,大概是因为Controller在master3节点上,所以需要挂载这个盘的应用只能部署在master3节点上

b.报错special device /var/lib/kubelet/plugins/kubernetes.io/csi/pv/wfs-pv-load04-smb/globalmount does not exist.

是因为这个同一个集群挂的第二个cifs,且在配置的时候,与第一个盘设置的volumeHandle: smb-server.default.svc.cluster.local/share## 一模一样,导致在deploy挂载这个盘之后没有在/var/lib/kubelet/plugins/kubernetes.io/csi/pv/ 下生成新的pv目录wfs-pv-load04-smb 所以找不到目录,此时应该更改一下volumeHandle的值,如设置为smb-server.default.svc.cluster.local/share1## 之后就可正常使用。

c.报错mount error(5): Input/output error Refer to the mount.cifs(8) manual page (e.g. man mount.cif end 1

查看服务器/var/log/message日志,显示

 No dialect specified on mount. Default has changed to a more secure dialect, SMB2.1 or later (e.g. SMB3), from CIFS (SMB1). To use the less secure SMB1 dialect to access old servers which do not support SMB3 (or SMB2.1) specify vers=1.0 on mount.

是因为cifs的版本不对,默认version为1,需要在pv创建是指定

mountOptions:- vers=2.0

 版本升级

从csi-driver-smb v1.11升级到v1.16配置文件不用动 只用更新镜像,从24年很多镜像源都不能用了,找到一个docker.imgdb.de镜像源,使用时需要在镜像名前加docker.imgdb.de,如:

docker pull docker.imgdb.de/registry.k8s.io/sig-storage/livenessprobe:v2.13.1

 

v1.11.0与v1.16.0版本镜像

v1.11.0
csi-smb-node.yaml
registry.k8s.io/sig-storage/livenessprobe:v2.3.0    
registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.2.0
mcr.microsoft.com/k8s/csi/smb-csi:v1.1.0
csi-smb-controller.yaml 
registry.k8s.io/sig-storage/csi-provisioner:v2.1.0
registry.k8s.io/sig-storage/livenessprobe:v2.3.0(node中已有)
mcr.microsoft.com/k8s/csi/smb-csi:v1.1.0(node中已有)v1.16.0
csi-smb-node.yaml
registry.k8s.io/sig-storage/livenessprobe:v2.13.1
registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.11.1
registry.k8s.io/sig-storage/smbplugin:v1.16.0
csi-smb-controller.yaml 
registry.k8s.io/sig-storage/csi-provisioner:v5.0.2
registry.k8s.io/sig-storage/livenessprobe:v2.13.1(node中已有)
registry.k8s.io/sig-storage/smbplugin:v1.16.0 (node中已有)

 

http://www.zskr.cn/news/64214.html

相关文章:

  • java.io.IOException: Could not find resource mybatis-config.xml
  • 分析nvidia驱动run文件源码结构
  • 详细介绍:Spring数据库连接控制全解析
  • 习题解析之:奇偶插入
  • 2025美白淡斑面膜品牌Top5实测推荐!色斑暗黄党必看,有效去痘印产品
  • 软件安全 --- 安卓安全 之 动态加载
  • 实用指南:复原大唐3d项目测试版
  • 2025年值得关注的纸杯机与纸碗机、纸盖机一体化解决方案提供商
  • 2025最新宠物抓伤急救液品牌怎么选?葆爱堂专注宠物健康,宠物抓伤创面消毒液/宠物消杀,更专业,更安全
  • 从纸杯机到纸盘机!2025 全品类制杯机选购指南:全伺服 / 超声波款 + 纸碗机 / 纸盖机省本技巧
  • 降低动态功耗的利器:Clock Gating 技术解析
  • 大模型开发技巧记录(不定期更新)
  • 2025年字节跳动奖学金揭晓:20位获奖人才研究方向速览
  • CoaXPress 相机采集卡对比 - Hello
  • 2025建材推荐榜:煌匠美缝剂_环氧地坪_彩砂自流平,装修选材必看!
  • 【IEEE出版 | EI检索】第七届国际科技创新学术交流大会暨信息技术与计算机应用学术会议(ITCA 2025)
  • 2025年东莞樟木头搬家服务权威推荐榜单:东莞同城搬家公司/东莞厚街搬家服务/东莞大岭山搬家服务精选
  • 河南煌匠建材:专注美缝剂、环氧地坪、彩砂自流平,15年匠心守护优质空间 (2)
  • 6款免费AI毕业论文工具推荐:一键生成+零成本降重,效率翻倍
  • 打开文件夹
  • 玩 Linux 随便记录点东西
  • 占有率最高的工业总线:PROFINET、Modbus 与 EtherCAT
  • 2025年广东家装全屋定制推广权威推荐榜单:广东全屋家具定制/广东全屋整装家具定制/广东全屋定制柜子供货商精选
  • 【IEEE出版 | EI检索】第七届国际科技创新学术交流大会暨通信、信息系统和软件工程学术会议(CISSE 2025)
  • 大带宽服务器租用建站有哪些优势
  • 隐私代币逆势上涨背后的技术、监管与市场博弈
  • 控油洗发水哪款好?10 款高口碑款推荐,解决头油显邋遢 + 贴头皮尴尬
  • 2025 年市面上四川不锈钢井盖 / 不锈钢井盖厂家最新TOP排名
  • GAN模型
  • GD32F407VE天空星开发板的MQ135的空气质量检测 - 详解