当前位置: 首页 > 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.jsqmd.com/news/54184/

相关文章:

  • 2025年室内体育馆运动地胶生产厂家权威推荐榜单:定制运动地板/室外地胶‌/网红场馆‌源头厂家精选
  • IDEA+MyBatis实现增删改查(2)
  • 2025 年常州家政服务机构最新推荐榜,技术实力与市场口碑深度解析:全品类服务品牌测评正规月嫂 / 老人护理 / 育儿照料 / 白班保姆 / 钟点工 / 家政保洁服务公司推荐
  • IDEA 2024版如何创建Spring Boot项目
  • 什么DeekSpeek居然自己会学习?
  • 2025年下半年北京pmp培训,产品经理培训,人工智能培训,npdp培训,pmp项目管理培训机构综合推荐与选择指南
  • java.io.IOException: Could not find resource mybatis-config.xml
  • 2025年陶瓷环订做厂家权威推荐榜单:陶瓷零件/陶瓷手臂‌/陶瓷手臂‌源头厂家精选
  • 焊装现场的眼睛:profinet嵌入式开发板打造端到端视觉焊装解决方案
  • 分析nvidia驱动run文件源码结构
  • 详细介绍:Spring数据库连接控制全解析
  • 第五十一篇
  • 习题解析之:奇偶插入
  • 技术文档中,什么是前置条件?什么是后置条件?
  • 上海债务重组公司怎么选?这份“避坑”指南助你找到靠谱服务
  • SeaTunnel部署及其Demo
  • 2025年广州全屋定制制造厂家推荐
  • 400电话号如何选?
  • 2025年不锈钢桥架厂家权威推荐榜单:防火桥架/耐火桥架/钢制桥架源头厂家精选
  • C# 使用多线程的几种方式
  • 初一数学
  • AI智能外呼如何助力法院减负?一文看懂技术带来的改变
  • 2025年电永磁夹具吸盘供应商权威推荐榜:CNC磁力夹具/机械手专用电控永磁吸盘/abb机器人吸盘源头厂家精选
  • 2025美白淡斑面膜品牌Top5实测推荐!色斑暗黄党必看,有效去痘印产品
  • 2025年果蔬保鲜冷库定做厂家权威推荐榜单:冷库安装/冷库铝排管‌/冷库设备‌源头厂家精选
  • 软件安全 --- 安卓安全 之 动态加载
  • DeepSeek-OCR - 教程
  • 前瞻思考,收获未来
  • 精明投资者的2025购机策略机策略:聚焦纸杯机、纸盖机长期回报率,破解靠谱设备与服务迷思
  • 实用指南:复原大唐3d项目测试版