SUSE CaaS Platform 4 - Ceph RBD 作为 Pod 存储卷
时间:2019-10-08
本文章向大家介绍SUSE CaaS Platform 4 - Ceph RBD 作为 Pod 存储卷,主要包括SUSE CaaS Platform 4 - Ceph RBD 作为 Pod 存储卷使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
RBD存储卷
目前 CaaSP4 支持多种 Volume 类型,这里选择 Ceph RBD(Rados Block Device),主要有如下好处:
- Ceph 经过多年开发,已经非常熟,社区也很活跃;
- Ceph 同时支持对象存储,块存储和文件系统接口;
环境准备条件
1、搭建环境
- 操作系统版本: SLES15 SP1,无需安装 swap
- 内核版本:4.12.14-197.18-default
- Kubernetes 版本:CaaSP 4 , v1.15.2
- Ceph :Storage 6
- VMware Workstation 14
2、虚拟化环境搭建和系统安装参考:
- SUSE Storage6 环境搭建详细步骤 - Win10 + VMware WorkStation
- SUSE Linux Enterprise 15 SP1 系统安装
- SUSE Ceph 快速部署 - Storage6
- SUSE CaaS Platform 4 - 安装部署
3、实验目的
配置 Pod 资源使用 RBD 存储卷
图1 环境架构
1、所有节点安装
# zypper -n in ceph-common
复制 ceph.conf 到 worker 节点上
# scp admin:/etc/ceph/ceph.conf /etc/ceph/
2、创建池 caasp4
# ceph osd pool create caasp4 128
3、创建 key ,并存储到 /etc/ceph/ 目录中
# ceph auth get-or-create client.caasp4 mon 'allow r' \
osd 'allow rwx pool=caasp4' -o /etc/ceph/caasp4.keyring
4、创建 RBD 镜像,2G
# rbd create caasp4/ceph-image-test -s 2048
5、查看 ceph 集群 key 信息,并生成基于 base64 编码的key
# ceph auth list
.......
client.admin
key: AQA9w4VdAAAAABAAHZr5bVwkALYo6aLVryt7YA==
caps: [mds] allow *
caps: [mgr] allow *
caps: [mon] allow *
caps: [osd] allow *
.......
client.caasp4
key: AQD1VJddM6QIJBAAlDbIWRT/eiGhG+aD8SB+5A==
caps: [mon] allow r
caps: [osd] allow rwx pool=caasp4
对 key 进行 base64 编码
# echo AQD1VJddM6QIJBAAlDbIWRT/eiGhG+aD8SB+5A== | base64
QVFEMVZKZGRNNlFJSkJBQWxEYklXUlQvZWlHaEcrYUQ4U0IrNUE9PQo=
6、Master 节点上,创建 secret 资源,插入 base64 key
# vi ceph-secret-test.yaml
apiVersion: v1
kind: Secret
metadata:
name: ceph-secret-test
data:
key: QVFEMVZKZGRNNlFJSkJBQWxEYklXUlQvZWlHaEcrYUQ4U0IrNUE9PQo=
# kubectl create -f ceph-secret-test.yaml
secret/ceph-secret-test created
# kubectl get secrets ceph-secret-test
NAME TYPE DATA AGE
ceph-secret-test Opaque 1 14s
7、创建 Pod,并使用存储卷
# mkdir /root/ceph_rbd_pod
# vim /root/ceph_rbd_pod/ceph-rbd-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: vol-rbd-pod
spec:
containers:
- name: ceph-busybox
image: busybox
command: ["sleep", "60000"]
volumeMounts:
- name: ceph-vol-test
mountPath: /usr/share/busybox
readOnly: false
volumes:
- name: ceph-vol-test
rbd:
monitors:
- 192.168.2.40:6789
- 192.168.2.41:6789
- 192.168.2.42:6789
pool: caasp4
image: ceph-image-test
user: caasp4
secretRef:
name: ceph-secret-test
fsType: ext4
readOnly: false
8、查看 Pod 状态和挂载
# kubectl get pods
NAME READY STATUS RESTARTS AGE
vol-rbd-pod 1/1 Running 0 22s
# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
vol-rbd-pod 1/1 Running 0 27s 10.244.2.59 worker02 <none> <none>
# kubectl describe pods vol-rbd-pod
Containers:
ceph-busybox:
.....
Mounts: # 挂载
/usr/share/busybox from ceph-vol-test (rw)
/var/run/secrets/kubernetes.io/serviceaccount from default-token-4hslq (ro)
.....
Volumes:
ceph-vol-test:
Type: RBD (a Rados Block Device mount on the host that shares a pod's lifetime)
CephMonitors: [192.168.2.40:6789 192.168.2.41:6789 192.168.2.42:6789]
RBDImage: ceph-image-test # RBD 镜像名
FSType: ext4 # 文件格式
RBDPool: caasp4 # 池
RadosUser: caasp4 # 用户
Keyring: /etc/ceph/keyring
SecretRef: &LocalObjectReference{Name:ceph-secret-test,}
ReadOnly: false
default-token-4hslq:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-4hslq
Optional: false
.....
9、worker02节点上查看映射
worker02:~ # rbd showmapped
id pool namespace image snap device
0 caasp4 ceph-image-test - /dev/rbd0
原文地址:https://www.cnblogs.com/alfiesuse/p/11630226.html
- Spring-拾遗
- Golang面试题
- 简单易学的机器学习算法——基于密度的聚类算法DBSCAN
- 厚土Go学习笔记 | 29. 接口
- Golang Template 简明笔记
- hotspare的copyback(r7笔记第30天)
- Spring-AOP
- DBA和开发同事的一些代沟(三)(r7笔记第29天)
- 简单易学的机器学习算法——非线性支持向量机
- 一条关于swap争用的报警邮件分析(一)(r7笔记第28天)
- Spring-IOC(2)
- Python3 pandas read_csv 读取txt文件报错:IOError: Initializing from file failed
- dataguard添加临时数据文件的bug(r7笔记第27天)
- 简单易学的机器学习算法——线性支持向量机
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- android全局监控click事件的四种方式(小结)
- Linux下如何永久修改主机名的方法步骤
- android与asp.net服务端共享session的方法详解
- Android实现多个连续带数字圆圈效果
- Android录制mp3格式文件
- Linux内核设备驱动之虚拟文件系统笔记整理
- linux服务器上使用nginx访问本地静态资源的方法
- Android控件之菜单的创建方式
- 可支持快速搜索筛选的Android自定义选择控件
- Android编程实现的短信编辑器功能示例
- SELinux 入门详解
- Android EditText限制输入字符的方法总结
- Android使用API实现图像扭曲效果示例
- linux网络配置工具的使用
- Android基于BaseExpandableListAdapter实现的二级列表仿通话记录功能详解