通过静态方式挂载RBD卷
目前的K8S采用容器化部署,因此除了在host机器安装ceph-common之外,还需要在启动kubelet容器时挂载如下三个volume
--volume=/sbin/modprobe:/sbin/modprobe:ro \
--volume=/lib/modules:/lib/modules:ro \
--volume=/dev:/dev:ro \
在kubelet容器中安装ceph-common,需要制作更新后的kubelet镜像
echo deb http://download.ceph.com/debian-jewel/ jessie main | tee /etc/apt/sources.list.d/ceph.list
wget -q -O- 'https://download.ceph.com/keys/release.asc' | apt-key add - 或者 docker cp 方式将release.asc拷贝到容器内并通过apt-key add release.asc添加key
apt-get update
apt-get install ceph-common -y
获取kube用户的Ceph Authentication Secret,需事先在ceph集群创建kube用户
ceph auth get-key client.kube | base64 //得到base64 encoded的密钥
创建ceph-secret的yaml文件并创建secret
kubectl create -f ceph-secret.yaml
在ceph集群的pool1中创建test image,并格式化成ext4文件系统,目前krbd方式只支持的feature为layering
创建pod的yaml文件并创建pod,确认pod所在host节点已部署ceph-common
kubectl create -f rbd.json
参考:https://github.com/kubernetes/kubernetes/tree/master/examples/volumes/rbd
https://github.com/kubernetes/kubernetes/issues/23924
通过PVC方式动态挂载
目前的K8S采用容器化部署,因此除了在host机器安装ceph-common之外,还需要在启动kube-controller-manager容器时挂载如下三个volume
--volume=/sbin/modprobe:/sbin/modprobe:ro \
--volume=/lib/modules:/lib/modules:ro \
--volume=/dev:/dev:ro \
重新制作hyperkube镜像,安装ceph-common
创建ceph-secret-admin的yaml文件并创建admin的secret
kubectl create -f ceph-secret-admin.yaml --namespace=kube-system
创建测试的namespace pvctest
kubectl create namespace pvctest
创建ceph-secret-user的yaml文件并创建kube的secret
kubectl create -f ceph-secret-user.yaml --namespace=pvctest
创建rbd-storage-class的yaml文件并创建storageclass
kubectl create -f rbd-storage-class.yaml
创建pvc的json文件并创建名为claim1的pvc
kubectl create -f claim1.json --namespace=pvctest
创建pod的yaml文件并创建rc
kubectl create -f pod.yaml --namespace=pvctest
验证是否创建成功,目前动态创建的RBD镜像的format为1
参考:https://github.com/kubernetes/kubernetes/tree/master/examples/persistent-volume-provisioning
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞7
添加新评论0 条评论