K8s对接Ceph-csi配置手册(附带踩坑记录以及解决方法)
目录
Ceph CSI (Container Storage Interface)
如果此时全部显示错误,那就代表镜像拉取错误,此时执行的yaml脚本,通过yaml脚本去K8S的镜像仓库去拉取镜像。如果这一步遇到错误可以直接去最下方查看解决办法。编辑
1. kubuctl get po -o wide 的时候发现惊险全部没有被拉取下来,此时我们可以通过describle去分析一下缺少哪些镜像。
2. failed to fetch monitor list using clusterID
3. curl: (52) Empty reply from server
Kubernetes (K8S) 是一个流行的容器编排平台,而 Ceph 是一个分布式存储系统,提供了对象存储、块存储和文件系统等多种存储服务。在 Kubernetes 中使用 Ceph 作为持久化存储后端是一种常见的部署模式。
Ceph CSI (Container Storage Interface)
Ceph CSI(容器存储接口)是 Ceph 社区为 Kubernetes 开发的一个插件,它允许 Kubernetes 使用 Ceph 的块存储功能。CSI 是 Kubernetes 存储生态的一部分,用于标准化各种存储系统的集成方式。
CSI 的作用:
- 标准化接口:CSI 提供了一个标准的接口,使得 Kubernetes 可以与不同的存储系统交互。
- 存储管理:通过 CSI 插件,Kubernetes 可以创建、删除、挂载和卸载存储卷。
- 动态配置:支持动态配置存储类(StorageClass),这允许用户定义存储需求,并由 Kubernetes 动态地分配资源。
前提配置
- 确保Ceph集群和Kubernetes集群已经正确部署并运行稳定。
- 配置MDS服务,确保CephFS可以使用。
- 创建存储池和文件系统,为CephFS接口准备必要的存储资源。
- 确保K8S和Ceph版本有所匹配。
目前K8s与ceph - csi版本对应:
版本信息
- Kubernetes: v1.19.7
- Ceph-CSI: v3.4.0
- Ceph: v16.2.10
获取Ceph认证信息
创建认证用户:
查看认证用户信息:
输出示例:
输出示例:
获取Ceph集群Monitor信息
获取Cluster ID和Monitors信息:
输出示例:
下载并部署Ceph CSI
下载Ceph-CSI:
修改csi-config-map.yaml
文件:
注意,文件中不可有任何注释!!否则在创建PVC的时候会提示报错,显示获取不到Monitor的列表。
部署Ceph CSI:
检查Pod状态:
如果此时全部显示错误,那就代表镜像拉取错误,此时执行的yaml脚本,通过yaml脚本去K8S的镜像仓库去拉取镜像。如果这一步遇到错误可以直接去最下方查看解决办法。
创建Secret
创建Secret文件:
应用Secret:
创建StorageClass
编辑storageclass.yaml
文件:
应用StorageClass:
创建PVC
创建pvc.yaml
文件:
应用PVC:
STATUS显示Bound即代表正常
此时如果这个地方报错先检查你的pod是否全部处于运行状态,其次去检查你的csi-config-map.yaml是否有注释,如果都没问题还是报错可以用describle去检查一下报错原因。
示例:
创建Pod
创建pod.yaml
文件:
应用Pod:
这个就是我们创建出来的Pod-demo
验证
在Ceph节点上验证:
会发现有我们K8s创建的东西
从Kubernetes Master节点验证:
同时也可以通过进入容器对远处的文件系统进行写入
此时在Ceph节点下查看会出现这个和我们之前创建的文件
验证完成!
错误解决方法:
1. kubuctl get po -o wide 的时候发现惊险全部没有被拉取下来,此时我们可以通过describle去分析一下缺少哪些镜像。
以这个为例,你会发现他缺少了的是Nginx的镜像,这通常与K8S的仓库有关,虽然这个是Docker的,但是你们遇到的错误一般都是K8S的仓库镜像拉不下来。
这个可以从这个网站里面下载。以 k8s.gcr.io/sig-storage/csi-resizer:v1.2.0 为例:
其原理就是拉取镜像,然后修改镜像的TAG,使其能够检测到你拉取的镜像,最终完成。
2. failed to fetch monitor list using clusterID
去掉注释即可。删除PVC和PV,修改csi-config-map.yaml文件,然后重新apply -f 一下即可。
3. curl: (52) Empty reply from server
如果你是在有网的情况下首先去检查下你的DNS配置是否正确,可以用nmtui或者cat /etc/sysconfig/network-scripts/ifcfg-eth0去查看。
此时就是配置没问题,那么看看你是否是通过代理上网。
curl IP -v可以查看详细信息。
可以看到我这边是先连接到代理IP,然后去curl那个IP,我在代理上ping了一下这个IP发现ping不通,关闭代理即可。
就说到这里,希望可以帮到大家~
参考链接:
- 点赞
- 收藏
- 关注作者
评论(0)