在kubernetes中使用StorageClass绑定ceph rbd
2017-11-27 00:00
776 查看
使用StorageClass挂载ceph rbd需要用到2个cephx角色。一个用于创建和管理rbd,在这里我们使用admin,另一个用于挂载rbd到Pod中,我们可以在ceph中手动创建一个。
准备:
假设已有一套
需要保证
为每个
一、创建一个
二、创建cephx用户,用于挂载由
三、获取
记录输出的内容,如:
四、获取
记录输出的内容,如:
五、创建
六、创建
七、创建
准备:
假设已有一套
ceph集群,
Monitor分别为
192.168.1.1,
192.168.1.2和
192.168.1.3
需要保证
Monitor的
6379端口和
OSD的
6800端口对
kubelet节点开放
为每个
kubelet节点都安装
ceph-common
一、创建一个
k8s存储池,用于存放数据卷
# ceph osd pool create k8s 64 64
二、创建cephx用户,用于挂载由
admin创建好的
rbd
# ceph auth get-or-create client.k8s mon 'allow r' osd 'allow * pool=k8s'
三、获取
k8s用户的
key,以
base64编码
# ceph auth get-key client.k8s|base64
记录输出的内容,如:
QVFEQjlmcFpjUE5lS0JBQU40NnZxZ2dIT0dRTEtaeUx1blNjR1E9PQ==
四、获取
admin用户的
key,以
base64编码
# ceph auth get-key client.admin|base64
记录输出的内容,如:
QVFDUDNrQllRRVBJR0JBQXFuVXJQbHZQaC9xZEQ2ZGVZOXRoVXc9PQ==
五、创建
storage-class-rbd.yaml
--- apiVersion: v1 data: key: QVFEQjlmcFpjUE5lS0JBQU40NnZxZ2dIT0dRTEtaeUx1blNjR1E9PQ== kind: Secret metadata: name: ceph-secret-user namespace: default type: kubernetes.io/rbd --- apiVersion: v1 data: key: QVFDUDNrQllRRVBJR0JBQXFuVXJQbHZQaC9xZEQ2ZGVZOXRoVXc9PQ== kind: Secret metadata: name: ceph-secret-admin namespace: kube-system type: kubernetes.io/rbd --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: rbd provisioner: kubernetes.io/rbd parameters: monitors: 192.168.1.1:6789,192.168.1.2:6789,192.168.1.3:6789 adminId: admin adminSecretName: ceph-secret-admin adminSecretNamespace: kube-system pool: k8s userId: k8s userSecretName: ceph-secret-user fsType: xfs imageFormat: "2" imageFeatures: "layering"
六、创建
StorageClass
# kubectl create -f ./storage-class-rbd.yaml
七、创建
nginx-statefulset.yaml, 通过
StatefulSet动态挂载卷
--- apiVersion: apps/v1beta1 kind: StatefulSet metadata: name: web spec: serviceName: "nginx" replicas: 2 volumeClaimTemplates: - metadata: annotations: volume.beta.kubernetes.io/storage-class: "rbd" # 这里配置 上面创建的 storageclass 的名称 spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 2Gi template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest volumeMounts: - mountPath: "/usr/share/nginx/html/" name: html
StatefulSet会为每个
Pod创建一个
rbd数据卷,并挂载到
/usr/share/nginx/html/目录中,数据卷会随着
StatefulSet的伸缩而动态创建和销毁。
相关文章推荐
- kubernetes的ceph RBD volume(5): 创建动态的volume绑定随replica scale的扩容和缩容的pod
- kubernetes的ceph RBD volume(3): 动态volume的使用(ceph RBD)
- kubernetes的ceph RBD volume(1):使用Ceph RBD作为后端Volume
- kubernetes使用ceph rbd存储
- kubernetes的ceph RBD volume(2): 使用Ceph RBD作为persistent volume
- 初试 Kubernetes 集群使用 Ceph RBD 块存储
- kubernetes使用cephRBD作为存储卷
- Ceph RBD使用
- CEPH RBD集群使用
- 与Ceph RBD关联,实现Kubernetes持久化存储 - PaaS云
- 通过iscsi协议使用ceph rbd
- 使用boost.bind绑定class的成员函数作为boost thread的入口
- [Kubernetes] 容器挂载 ceph rbd 卷的平滑扩容方法
- 与Ceph RBD关联,实现Kubernetes持久化存储 - PaaS云
- openstack nova后端使用ceph rbd(增加在线迁移live_migrate和快照snapshot功能)
- kubernetes整合ceph rbd
- 学习使用vue.js(五)绑定Style 与Class
- iscsi协议使用ceph rbd
- kubernetes使用ceph
- Vue.js使用v-bind绑定class时的注意事项