新聞中心
Kubernetes pod 結(jié)合Ceph rbd塊設(shè)備的使用,讓Docker 數(shù)據(jù)存儲(chǔ)在Ceph,重啟Docker或k8s RC重新調(diào)度pod 不會(huì)引起數(shù)據(jù)來回遷移。

工作原理無非就是拿到ceph集群的key作為認(rèn)證,遠(yuǎn)程rbdmap映射掛載使用。那么就要啟用一個(gè)基于key的secret資源,之后k8s pod指定要用的rbd就可以了。
環(huán)境測(cè)試
我的OS是ubuntu 14.04,一個(gè)master,兩個(gè)minon 節(jié)點(diǎn),一個(gè)鏡像倉(cāng)庫(kù)服務(wù),這樣保證了k8s集群跑起來,這個(gè)過程就略過了。
1.內(nèi)核升級(jí)
這里的ceph 版本裝的是10.2.2,客戶端內(nèi)核過低會(huì)引起掛載失敗,主要就是minion節(jié)點(diǎn)。
# curl -sSL https://get.docker.com | sh && service docker restart
# apt-get install linux-image-4.4.0-22-generic && reboot
2.安裝ceph-common,讓minion調(diào)用rbd
root@minion2:~# apt-get install python-rbd ceph-common
3.保存ceph-keyring和配置文件
root@minion2:~# ll /etc/ceph
total 20
drwxr-xr-x 2 root root 4096 Jun 22 2016 ./
drwxr-xr-x 93 root root 4096 Nov 11 11:18 ../
-rw------- 1 root root 63 Apr 25 2016 ceph.client.admin.keyring
-rw-r--r-- 1 root root 249 Jun 22 2016 ceph.conf
-rw-r--r-- 1 root root 92 Jun 14 2016 rbdmap
4.獲取ceph keyring 的base64編碼字符串
root@minion2:~# ceph auth get-key client.admin
AQAmnRlX2zrqDRAAOiuOs2sIItGhAP6tNDa3Vg==root@minion2:~#
root@minion2:~# grep key /etc/ceph/ceph.client.admin.keyring |awk '{printf "%s", $NF}'
AQAmnRlX2zrqDRAAOiuOs2sIItGhAP6tNDa3Vg==
root@minion2:~# grep key /etc/ceph/ceph.client.admin.keyring |awk '{printf "%s", $NF}'|base64
QVFBbW5SbFgyenJxRFJBQU9pdU9zMnNJSXRHaEFQNnRORGEzVmc9PQ==
5.創(chuàng)建基于keyring 的secret資源
root@master:~# cat ceph-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: ceph-secret
data:
key: QVFBbW5SbFgyenJxRFJBQU9pdU9zMnNJSXRHaEFQNnRORGEzVmc9PQo=
root@master:~# kubectl create -f ceph-secret.yaml
root@master:~# kubectl get secret
NAME TYPE DATA AGE
ceph-secret Opaque 1 187d
default-token-rk17v kubernetes.io/service-account-token 3 208d
6.編輯一個(gè)可用的ReplicationController 讓rbdpod跑起來
# kubectl create -f rbd-rc.yaml
驗(yàn)證結(jié)果
這樣的我們?cè)趐od就跑起來了,可以看到mount掛載信息,也可以進(jìn)入容器查看
root@minion2:~# docker ps | grep rbd
4b8fc04501b1 nginx "nginx -g 'daemon off" 6 months ago Up 6 months k8s_rbdpod.b1ab9160_rbpod-k3yxn_default_88540575-3847-11e6-a098-0a6a7c3a684c_f8caa4bc3c9c1240b72e gcr.io/google_containers/pause:2.0 "/pause" 6 months ago Up 6 months k8s_POD.25c801ab_rbdpod-k3yxn_default_88540575-3847-11e6-a098-0a6a7c3a684c_c38f4ce7
root@minion2:~# mount | grep rbd
/dev/rbd0 on /var/lib/kubelet/plugins/kubernetes.io/rbd/rbd/data-image-wxq type ext4 (rw)
/var/lib/kubelet/plugins/kubernetes.io/rbd/rbd/data-image-wxq on /var/lib/kubelet/pods/88540575-3847-11e6-a098-0a6a7c3a684c/volumes/kubernetes.io~rbd/rbdpd type none (rw)
這樣k8s完美的結(jié)合了Ceph 塊設(shè)備,它們又能愉悅的在一起玩耍了,至于有沒有真感情且看未來。
分享題目:Kubernetes共享Ceph存儲(chǔ)具體方法
分享鏈接:http://fisionsoft.com.cn/article/dpjjogj.html


咨詢
建站咨詢
