kubernetes使用ceph
一、有一个ceph cluster,假设已经准备好了,文档网上一大堆
二、开始集成ceph和kuberntes
2.1 禁用rbd features
rbd image有4个 features,layering, exclusive-lock, object-map, fast-diff, deep-flatten
因为目前内核仅支持layering,修改默认配置
每个ceph node的/etc/ceph/ceph.conf 添加一行
rbd_default_features = 1
这样之后创建的image 只有这一个feature
验证方式:
ceph --show-config|grep rbd|grep features
rbd_default_features = 1
2.2 创建ceph-secret这个k8s secret对象,这个secret对象用于k8s volume插件访问ceph集群:
获取client.admin的keyring值,并用base64编码:
# ceph auth get-key client.admin
AQBRIaFYqWT8AhAAUtmJgeNFW/o1ylUzssQQhA==
# echo "AQBRIaFYqWT8AhAAUtmJgeNFW/o1ylUzssQQhA=="|base64
QVFCUklhRllxV1Q4QWhBQVV0bUpnZU5GVy9vMXlsVXpzc1FRaEE9PQo=
创建ceph-secret.yaml文件,data下的key字段值即为上面得到的编码值:
apiVersion: v1
kind: Secret
metadata:
name: ceph-secret
data:
key: QVFCUklhRllxV1Q4QWhBQVV0bUpnZU5GVy9vMXlsVXpzc1FRaEE9PQo=
创建ceph-secret:
# kubectl create -f ceph-secret.yaml
secret "ceph-secret" created
# kubectl get secret
NAME TYPE DATA AGE
ceph-secret Opaque 1 2d
default-token-5vt3n kubernetes.io/service-account-token 3 106d
三、Kubernetes Persistent Volume和Persistent Volume Claim
概念:PV是集群的资源,PVC请求资源并检查资源是否可用
注意:以下操作设计到name的参数,一定要一致
3.1 创建disk image (以jdk保存到ceph举例)
# rbd create jdk-image -s 1G
# rbd info jdk-image
rbd image ‘jdk-image‘:
size 1024 MB in 256 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.37642ae8944a
format: 2
features: layering
flags:
3.2 创建pv
创建mysql-hzb-pv.yaml:
方式一:
monitors: 就是ceph的mon,有几个写几个
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-hzb-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
rbd:
monitors:
- 172.16.60.41:6789
- 172.16.60.42:6789
- 172.16.60.43:6789
pool: rbd
image: mysql-hzb
user: admin
keyring: "/etc/ceph/ceph.client.admin.keyring"
fsType: ext4
readOnly: false
persistentVolumeReclaimPolicy: Recycle
方式二(仍然使用之前创建的ceph-secret):
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-hzb-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
rbd:
monitors:
- 172.16.60.41:6789
- 172.16.60.42:6789
- 172.16.60.43:6789
pool: rbd
image: mysql-hzb
user: admin
secretRef:
name: ceph-secret
fsType: ext4
readOnly: false
persistentVolumeReclaimPolicy: Recycle
注意上面两种方式的红色部分的区别
执行创建操作:
# kubectl create -f mysql-hzb-pv.yaml
persistentvolume "mysql-hzb-pv" created
#kubectl get pv
NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM REASON AGE
mysql-hzb-pv 10Gi RWO Recycle Available default/mysql-hzb-pvc 34m
3.3 创建pvc
创建mysql-hzb-pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mysql-hzb-pvc
spec:
accessModes:
- ReadWriteOnce
volumeName: mysql-hzb-pv
resources:
requests:
storage: 10Gi
执行创建操作:
# kubectl create -f mysql-hzb-pvc.yaml
persistentvolumeclaim "mysql-hzb-pv" created
# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESSMODES AGE
mysql-hzb-pvc Bound mysql-hzb-pv 10Gi RWO 39s
3.4 创建挂载ceph rbd的pod:
创建 mysql-hzb-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: ceph-mysql-hzb-pod
spec:
containers:
- name: mysql-hzb
image: 172.16.101.192/common/mysql:5.6
env:
- name: MYSQL_ROOT_PASSWORD
value: "root"
volumeMounts:
- name: ceph-mysql-hzb-vl
mountPath: /var/lib/mysql
readOnly: false
volumes:
- name: ceph-mysql-hzb-vl
persistentVolumeClaim:
claimName: mysql-hzb-pvc
上面的两处红色的名字一定要一样
执行创建操作:
kubectl create -f mysql-hzb-pod.yaml
ceph rbd 持久化 这里描述下:
1、稳定性在于ceph
2、只能同一node挂载,不能跨node
3、读写只能一个pod,其他pod只能读
官方url描述
https://kubernetes.io/docs/user-guide/volumes/#rbd
附官方关于kubernetes的volume的mode
https://kubernetes.io/docs/user-guide/persistent-volumes/

本文出自 “银狐” 博客,请务必保留此出处http://foxhound.blog.51cto.com/1167932/1899545
kubernetes使用ceph的更多相关文章
- Kubernetes配置Ceph RBD StorageClass
1. 在Ceph上为Kubernetes创建一个存储池 # ceph osd pool create k8s 2. 创建k8s用户 # ceph auth get-or-create client.k ...
- kubernetes挂载ceph rbd和cephfs的方法
目录 k8s挂载Ceph RBD PV & PVC方式 创建secret 创建PV 创建PVC 创建deployment挂载PVC StorageClass方式 创建secret 创建Stor ...
- 腾讯基于Kubernetes的企业级容器云平台GaiaStack (转)
GaiaStack介绍 GaiaStack是腾讯基于Kubernetes打造的容器私有云平台.这里有几个关键词: 腾讯:GaiaStack可服务腾讯内部所有BG的业务: Kubernetes:Gaia ...
- Hypernetes简介——真正多租户的Kubernetes Distro
http://www.dockone.io/article/838 Hypernetes是一个真正多租户的Kubernetes Distro. Hypernetes在Kubernetes基础上增加了多 ...
- Kubernetes添加带Quota限额的CephFS StorageClass
1. 在Ceph上为Kubernetes创建一个文件系统 # ceph osd pool create cephfs_data # ceph osd pool create cephfs_metada ...
- SUSE CaaS Platform 4 - 使用 Ceph RBD 作为持久存储 (静态)
1.所有节点安装 # zypper -n in ceph-common 复制 ceph.conf 到 worker 节点上 # scp admin:/etc/ceph/ceph.conf /etc/c ...
- jenkins-gitlab-harbor-ceph基于Kubernetes的CI/CD运用(四)
前景提要 jenkins与gitlab结合,实现代码自动拉取:https://www.cnblogs.com/zisefeizhu/p/12548662.html jenkins与kubernetes ...
- kubernetes 1.17.2结合ceph13.2.8 实现jenkins部署并用traefik2.1代理
注:关于ceph.kubernetes集群的部署在此不声明,相信搜到本篇博文,你一定对ceph.kubernetes的部署环节手刃有余. 注:本篇博文牵扯到的技术点有:ceph.kubernetes. ...
- Kubernetes 持久化存储是个难题,解决方案有哪些?\n
像Kubernetes 这样的容器编排工具正在彻底改变应用程序的开发和部署方式.随着微服务架构的兴起,以及基础架构与应用程序逻辑从开发人员的角度解耦,开发人员越来越关注构建软件和交付价值. Kuber ...
随机推荐
- ESXI root密码忘记,重置root密码
今天遇到了一个叫人比较头疼的问题,早在一个月前公司拉来一台服务器,闲着没事我给装成了Esxi的虚拟机系统了,时间过久忘了当时设定的密码为何?故而翻了许久的资料,终于找好的方向,准备重置系统密码.准备搞 ...
- mysql语句求按字段分组后组数是多少
select count(distinct ID) from table Thinkphp CURD写 $count = $model->where($where)->count('dis ...
- python学习笔记(五):装饰器、生成器、内置函数、json
一.装饰器 装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能,比如说,我以前写了很多代码,系统已经上线了,但是性能比较不好,现在想把程序里 ...
- 聚合模型---K-Means
聚类模型:K-Means 聚类(clustering)属于无监督学习(unsupervised learning) 无类别标记 在线 demo:http://syskall.com/kmeans.js ...
- 初始mysql语句
操作文件夹(库) 增 : create database db1 charset utf8; 查 : #查看当前创建的数据库 show create database db1; #查看所有的数据库 s ...
- TCP超时与重传机制
TCP超时与重传机制 TCP协议是一种面向连接的可靠的传输层协议,它保证了数据的可靠传输,对于一些出错,超时丢包等问题TCP设计的超时与重传机制.其基本原理:在发送一个数据之后,就开启一个定时器 ...
- Linux git 关联 github仓库
背景: 由于最近学习Spring cloud docker 一键部署, 需要把github仓库项目, 放在Linux上面启动, (以下位置在/root/目录中执行)步骤, 1:安装 git >y ...
- 【转】RocketMQ事务消费和顺序消费详解
RocketMQ事务消费和顺序消费详解 转载说明:该文章纯转载,若有侵权或给原作者造成不便望告知,仅供学习参考. 一.RocketMq有3中消息类型 1.普通消费 2. 顺序消费 3.事务消费 顺序消 ...
- FFmpeg多媒体文件格式探测
FFmpeg版本:3.4 在FFmpeg中,每一种文件容器格式都对应一种AVInputFormat 结构,位于源码中libavformat文件夹中.当调用avformat_open_input的时候, ...
- Python常用的一些内建函数和math模块函数
一:Python内建函数 # abs取绝对值 num = -10 print(abs(num)) # max 求最大值 print(max(6, 9, 2, 12, 8)) # min求最小值 pri ...