一、有一个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的更多相关文章

  1. Kubernetes配置Ceph RBD StorageClass

    1. 在Ceph上为Kubernetes创建一个存储池 # ceph osd pool create k8s 2. 创建k8s用户 # ceph auth get-or-create client.k ...

  2. kubernetes挂载ceph rbd和cephfs的方法

    目录 k8s挂载Ceph RBD PV & PVC方式 创建secret 创建PV 创建PVC 创建deployment挂载PVC StorageClass方式 创建secret 创建Stor ...

  3. 腾讯基于Kubernetes的企业级容器云平台GaiaStack (转)

    GaiaStack介绍 GaiaStack是腾讯基于Kubernetes打造的容器私有云平台.这里有几个关键词: 腾讯:GaiaStack可服务腾讯内部所有BG的业务: Kubernetes:Gaia ...

  4. Hypernetes简介——真正多租户的Kubernetes Distro

    http://www.dockone.io/article/838 Hypernetes是一个真正多租户的Kubernetes Distro. Hypernetes在Kubernetes基础上增加了多 ...

  5. Kubernetes添加带Quota限额的CephFS StorageClass

    1. 在Ceph上为Kubernetes创建一个文件系统 # ceph osd pool create cephfs_data # ceph osd pool create cephfs_metada ...

  6. SUSE CaaS Platform 4 - 使用 Ceph RBD 作为持久存储 (静态)

    1.所有节点安装 # zypper -n in ceph-common 复制 ceph.conf 到 worker 节点上 # scp admin:/etc/ceph/ceph.conf /etc/c ...

  7. jenkins-gitlab-harbor-ceph基于Kubernetes的CI/CD运用(四)

    前景提要 jenkins与gitlab结合,实现代码自动拉取:https://www.cnblogs.com/zisefeizhu/p/12548662.html jenkins与kubernetes ...

  8. kubernetes 1.17.2结合ceph13.2.8 实现jenkins部署并用traefik2.1代理

    注:关于ceph.kubernetes集群的部署在此不声明,相信搜到本篇博文,你一定对ceph.kubernetes的部署环节手刃有余. 注:本篇博文牵扯到的技术点有:ceph.kubernetes. ...

  9. Kubernetes 持久化存储是个难题,解决方案有哪些?\n

    像Kubernetes 这样的容器编排工具正在彻底改变应用程序的开发和部署方式.随着微服务架构的兴起,以及基础架构与应用程序逻辑从开发人员的角度解耦,开发人员越来越关注构建软件和交付价值. Kuber ...

随机推荐

  1. pyc是什么

    python是解释型语言,需要解释器对程序逐行做出解释,然后直接运行. C语言是编译型语言,PC不需要翻译,直接执行就可以了. java也是解释型语言,不过速度可以跟编译型媲美. 用java举例,ja ...

  2. (转)python virtual_env 的使用 + 将原来的虚拟环境部署到新环境

    原文链接: https://blog.csdn.net/poxiaonie/article/details/78820015

  3. cache的作用

    cache的作用就是第一次请求完毕之后,如果再次去请求,可以直接从缓存里面读取而不是再到服务器端读取. 如果使用jquery,可以使用 cache参数来控制 $.ajax({  url: " ...

  4. python操作csv

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #CSV文件的写入(按行写入) import csv #csv文件,是一种常用的文本格式,用以存储表格数据,很 ...

  5. 04_java之基本语法02

    01switch语句解构 * A:switch语句解构 a:switch只能针对某个表达式的值作出判断,从而决定程序执行哪一段代码. b:格式如下: swtich(表达式){ case 常量1 : 要 ...

  6. 大数据,物联网(Internet of Things),万物互联网(Internet of Everything),云计算,雾计算,边缘计算(Edge Computing) 的区别和联系

    大数据是一种规模大到在获取.存储.管理.分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模.快速的数据流转.多样的数据类型,高价值性和准确性五大特征,即5V(Volume, V ...

  7. react之本地图片引用

    react之本地图片引用 <img src="../images/photo.png"/> 这种写法在react中是不支持的,所以引用本地图片需要用import或者re ...

  8. sql常用优化

    最近因工作需要,查找资料整理了一下sql的常见优化,具体如下: 1.尽量避免全表扫描,一般在where或order by 涉及的列上建立索引: 2.尽量避免在where子句中对索引字段进行null值判 ...

  9. 安装Apache2

    Linux下安装Apache 2.4 2012-08-06 09:36:51|  分类: linux|字号 订阅     本文原创,欢迎转载.转载请在文章明显可见处张贴如下内容:(注意:请保留超链接格 ...

  10. python:随机数 random

    #随机数 import random print(random.randint(10,12))#生成10-12之间的整数 print(random.uniform(10,12))#生成10-12之间的 ...