v1.5.1 kubernetes中RBD作为StorageClass/PVC/Volume

之前,我们是在分配好Pool后自己写程序创建image,然后分配给Pod等,后来发现Persistent Volume Provision这个feature觉得很方便,准备试下。

一、大概是我遇到最费解的坑

kubectl create -f rbd.yaml 
Error from server (BadRequest): error when creating "rbd.yaml": StorageClass in version "v1beta1" cannot be handled as a StorageClass: [pos 129]: json: expect char '"' but got char '['

一直以为是两个错

  • 版本
    不要纠结这个错,因为报错是迷惑你的。。版本这个1.5.1用apiVersion: storage.k8s.io/v1beta1
  • yaml里字段写错
    关于第二个错,StorageClass和PV的写法不一致,就按照我之前用PV的经验写的,如下
monitors: 
- cephmon1:6789
- cephmon2:6789
- cephmon3:6789

后来我不经意看到有一行

Ceph monitors, comma delimited.

改成下面这样,StorageClass就创建成功了

monitors: cephmon1:6789,cephmon2:6789,cephmon3:6789

可以用kubectl get storageclass

kubectl get storageclasses
NAME             TYPE
fast             kubernetes.io/rbd   
faster           kubernetes.io/rbd   
fastest          kubernetes.io/rbd   
slow (default)   kubernetes.io/rbd 

二、在PVC创建过程中,1.4/1.5/1.6中你需要配置的annotation key都是不一样的

  • 1.5
    Try a PVC with volume.beta.kubernetes.io/storage-class instead (note beta instead of alpha).
  • 1.6
    详见features/issues/36,应该是1.6变成.io/v1

正常vs不正常的PVC可以看下对比

# kubectl get pvc
NAME               STATUS    VOLUME                                     CAPACITY   ACCESSMODES   AGE
mysql-pv-claim     Bound     pvc-4ba718d9-0351-11e7-9b93-fa163e0ed0f9   20Gi       RWO           26m
noah-mysql-claim   Pending                                                                       3h

三、rbd runtime

有一点不太友好,你不看日志就不知道错误出在哪里的,经验值大概知道kubelet或scheduler要能调用rbd,这个pending就是因为rbd没装。其实这个坑遇到的人很多,搜索一下就能看到。我google的关键词是 hyperkube install rbd

E0307 16:25:11.096994       1 rbd_util.go:341] rbd: Error creating rbd image: executable file not found in $PATH
E0307 16:25:11.097006       1 rbd.go:310] rbd: create volume failed, err: executable file not found in $PATH
W0307 16:25:26.095622       1 rbd_util.go:336] failed to create rbd image, output 
W0307 16:25:26.095669       1 rbd_util.go:336] failed to create rbd image, output 
W0307 16:25:26.095700       1 rbd_util.go:336] failed to create rbd image, output

** 其实coreos挺良心,可以看看他们的wrap **

关于用了hyperkube和kubeadm的同学,如果你用的是这个image gcr.io/google_containers/hyperkube-amd64:v1.2.1 可以这样来补救你的环境(总比呼啦推倒重来好) ** 可能你还需要,手动安装下curl **

RUN curl https://raw.githubusercontent.com/ceph/ceph/master/keys/release.asc | apt-key add - && \
    echo deb http://download.ceph.com/debian-hammer/ jessie main | tee /etc/apt/sources.list.d/ceph.list && \
    apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install -q -y ceph-common && \
    apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

四、StorageClass必须加鉴权

这是个我觉得不太友好的坑,

  • 背景:
    我的测试ceph集群没开鉴权
  • 表现:
    storageclass创建成功了,但是在persistent volume claim的时候,
    PVC状态是Pending,就很费解,然后看日志,Controller-Manager和Scheduler的日志里有个错,找不到adminID,那我就加个假的secrets,PVC的状态对了。
    但是Pod的状态一直是ContainerCreating= =然后我去找kube-node的日志,kubelet上面报错,找不到StorageClass userId的Secret

参考:
https://github.com/xcompass/hyperkube
https://github.com/kubernetes/kubernetes/issues/23924
http://blog.kubernetes.io/2016/10/dynamic-provisioning-and-storage-in-kubernetes.html

  • 结论:StorageClass中的相关配置,这几行都不能少,即userId/adminId
adminId: admin
adminSecretName: ceph-secret-admin
adminSecretNamespace: "default"
userId: kube
userSecretName: ceph-secret-user

总结

在我的git repository<vessels/noah>下可以看到经过测试加持的yaml文件,坑踩完了,总结下,大概就是版本不一样,日志不好找带来的问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,233评论 6 495
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,357评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,831评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,313评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,417评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,470评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,482评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,265评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,708评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,997评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,176评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,503评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,150评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,391评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,034评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,063评论 2 352

推荐阅读更多精彩内容

  • 很抱歉,前两周我还在说没发现Kubernetes有扩展API来对接Ceph创建RBD卷,这两天翻阅文档才看到原来K...
    魔哈Moha阅读 6,512评论 1 11
  • 系统环境: centos73.10.0-514.26.2.el7.x86_64 机器数量:五台 硬盘:四块一块为系...
    think_lonely阅读 4,665评论 0 5
  • 原因:2017年4月14日 星期五 学习记录。说明:整理ceph资料。我的博客 : http://minichao...
    nicocoi阅读 8,203评论 1 9
  • 作者:汪志鹏 今天练习的是对话框的练习,对话框是视觉呈现的六大要素之一,不仅用于表达对话,还可以用于区隔不同信息。...
    思维导图实战派_汪志鹏阅读 652评论 0 7
  • 宇宙何其大,能将万物容。 人心常不满,欲望总无穷。 天地冥冥里,红尘念念中。 囊身终会灭,一切俱随风。
    唯一还是我阅读 383评论 12 16