设为首页 收藏本站
查看: 1435|回复: 0

[经验分享] kubernetes使用ceph

[复制链接]

尚未签到

发表于 2018-1-4 16:38:56 | 显示全部楼层 |阅读模式
  一、有一个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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-431575-1-1.html 上篇帖子: ceph hadoop spark 大数据处理 下篇帖子: kubernetes多节点的pod挂载同一个cephfs目录
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表