Ceph 与 StorageClass 集成
集成 ceph
2023-09-27 14:26:01 时间
ceph osd lspools
# 查看 ceph 的用户认证信息
ceph auth list
# 查看 ceph 集群 monitor 的信息
ceph mon dump
# 生成CEPH-CSI 配置映射
mkdir /data/csi
cd /data/csi
# ceph-csi 需要存储在 Kubernetes 中的 ConfigMap 对象来定义 Ceph 群集的 Ceph 监视器地址。
vi csi-config-map.yaml
---
apiVersion: v1
kind: ConfigMap
data:
config.json: |-
[
{
"clusterID": "af7a6791-5fc8-484e-b170-68828097d55b",
"monitors": [
"192.168.31.207:6789",
"192.168.31.159:6789",
"192.168.31.198:6789"
]
}
]
metadata:
name: ceph-csi-config
kubectl apply -f csi-config-map.yaml
kubectl get configmap
# 创建 CEPH-CSI SECRET
ceph auth list|grep -A 4 client.admin
# 注意:因为kubernetes用户会报错,我使用的 admin 用户
vi csi-rbd-secret.yaml
---
apiVersion: v1
kind: Secret
metadata:
name: csi-rbd-secret
namespace: default
stringData:
userID: admin
userKey: AQC3PpVged1WHBAANe1mTE4mS/CGkplYdhxqVw==
kubectl apply -f csi-rbd-secret.yaml
kubectl get secret
kubectl get secret csi-rbd-secret -o yaml
echo YWRtaW4= | base64 -d
# 配置 CEPH-CSI 插件
# 创建所需的ServiceAccount和 RBAC群集区域/群集区域绑定 kubernetes 对象。这些对象不一定需要针对您的 Kubernetes 环境进行自定义,因此可以从ceph-csi 部署 YAM使用:
wget https://raw.githubusercontent.com/ceph/ceph-csi/master/deploy/rbd/kubernetes/csi-provisioner-rbac.yaml
kubectl apply -f csi-provisioner-rbac.yaml
wget https://raw.githubusercontent.com/ceph/ceph-csi/master/deploy/rbd/kubernetes/csi-nodeplugin-rbac.yaml
kubectl apply -f csi-nodeplugin-rbac.yaml
# 创建ceph-csi预配和节点插件,注意镜像问题,可能需要FQ下载
wget https://raw.githubusercontent.com/ceph/ceph-csi/master/deploy/rbd/kubernetes/csi-rbdplugin-provisioner.yaml
kubectl apply -f csi-rbdplugin-provisioner.yaml
wget https://raw.githubusercontent.com/ceph/ceph-csi/master/deploy/rbd/kubernetes/csi-rbdplugin.yaml
kubectl apply -f csi-rbdplugin.yaml
wget https://raw.githubusercontent.com/ceph/ceph-csi/devel/examples/kms/vault/kms-config.yaml
kubectl apply -f kms-config.yaml
kubectl get configmap
kubectl get secrets
# 创建存储类
# Kubernetes存储类定义存储类。可以创建多个 StorageClass 对象以映射到不同的服务
# 确保下面的 clusterID 为 ceph cluster id
vi csi-rbd-sc.yaml
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: csi-rbd-sc
provisioner: rbd.csi.ceph.com
parameters:
clusterID: af7a6791-5fc8-484e-b170-68828097d55b
pool: kubernetes
csi.storage.k8s.io/provisioner-secret-name: csi-rbd-secret
csi.storage.k8s.io/provisioner-secret-namespace: default
csi.storage.k8s.io/node-stage-secret-name: csi-rbd-secret
csi.storage.k8s.io/node-stage-secret-namespace: default
imageFormat: "2"
imageFeatures: "layering"
reclaimPolicy: Delete # 这里为删除,正常情况下为 Retain
mountOptions:
- discard
kubectl apply -f csi-rbd-sc.yaml
kubectl get sc
# 创建的基于ceph-csi 的基于 cephfs PVC ,可以使用以下 YAML 从csi-rbd-sc存储类请求装载的文件系统(由 RBD image 支持)
cat filesystem-pvc.yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: filesystem-rbd-pvc
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
resources:
requests:
storage: 1Gi
storageClassName: csi-rbd-sc
kubectl apply -f filesystem-pvc.yaml
cat filesystem-pod.yaml
---
apiVersion: v1
kind: Pod
metadata:
name: csi-rbd-demo-pod
spec:
containers:
- name: web-server
image: nginx
volumeMounts:
- name: mypvc
mountPath: /var/lib/www/html
volumes:
- name: mypvc
persistentVolumeClaim:
claimName: filesystem-rbd-pvc
readOnly: false
kubectl apply -f filesystem-pod.yaml
创建 StatefulSet 进行测试
cat statefulset-pod.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
selector:
matchLabels:
app: nginx
serviceName: "nginx"
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
terminationGracePeriodSeconds: 10
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
name: web
volumeMounts:
- name: www
mountPath: /var/lib/www/html
volumeClaimTemplates:
- metadata:
name: www
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "csi-rbd-sc"
resources:
requests:
storage: 1Gi
kubectl apply -f statefulset-pod.yaml
相关文章
- 开涛spring3(8.2) - 对ORM的支持 之 8.2 集成Hibernate3
- 检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(转)
- 一文了解常用的微波传输线(二):矩形波导、集成波导、圆波导、矩圆转换器仿真
- Jenkins结合gitlab自动化持续集成
- 需求≠代码:查看单元测试用例覆盖率新姿势-IDEA 集成 JaCoCo
- 一文教你分清持续集成,持续交付,持续部署
- 微服务(六)-SpringCloud Gateway集成登录校验
- 「翻译」SAP MII(SAP制造集成和智能)-灵活且可扩展
- springcloud的turbine集成zookeeper
- 微服务学习一:idea中springboot集成mybatis
- 手把手学习springcloudalibaba:devtools的集成和趟过的坑总结
- 数据中台之数据集成平台的数据抽取
- Jenkins+Docker+Harbor+SpringCloud微服务持续集成(下)
- 【Apache Flume】Apache Flume之Java API集成