storageclass动态创建persistentvolume
2017-11-16 23:30
134 查看
storageclass动态创建persistentvolume
遇到的问题即原因
之前在开发过程中用storageclass结合pvc实现动态的创建pv,storageclass用的是ceph的rbd,创建ceph-rbd的需要创建对应的ceph-admin和ceph-user的cecret,其中用到ceph认证用的keystring,这里重点说下这个secret中keystring在k8s中是做啦base64编码处理了(sercet中的所有的data中的key所对应的值都必须是base64 encode后的串,在用的时候base64 decode),所以如果你直接在secret中吧keystring复制进来的话,会导致在创建pv的时候,ceph验证会失败,从而导致pv创建失败。在通过storageclass去创建ceph-rbd的时候,创建ceph-rbd存储块失败,看日志发现缺少ceph rbd的命令,原因是因为我的kube-controller-manager是以容器的方式部署的,容器中并没有安装ceph rbd命令,最后通过看pv的controller源码,发现在创建ceph-rbd存储块的时候,是通过拼装ceph-rbd的创建存储块的命令来实现:rbd create rbdname -adminid=xxx………这样的格式,所以如果kube-controller-manager如果以容器的方式运行的话,必须得在容器的基础镜像中安装ceph rbd的命令,执行:yum install -y ceph-common即可。
yaml如下
ceph-secret.yaml
apiVersion: v1 kind: Secret metadata: name: ceph-secret namespace: kube-system data: key: AQCnIiVZm/CCOxAAWfYdUhJUr1OemUMaWAEVpw== type: kubernetes.io/rbd
ceph-user-secret.yaml
apiVersion: v1 kind: Secret metadata: name: ceph-secret-user namespace: default data: key: AQCnIiVZm/CCOxAAWfYdUhJUr1OemUMaWAEVpw== type: kubernetes.io/rbd
ceph-rbd-storageclass.yaml
apiVersion: storage.k8s.io/v1beta1 kind: StorageClass metadata: name: minipaas annotations: storageclass.beta.kubernetes.io/is-default-class: "true" provisioner: kubernetes.io/rbd parameters: monitors: 192.168.1.1:6789,192.168.1.1:6789,192.168.1.1:6789 adminId: admin adminSecretName: ceph-secret adminSecretNamespace: kube-system pool: test-pool userId: admin userSecretName: ceph-secret-user
pvc-demo.yaml
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: demo spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: minipaas
说明
一定要记住secret中的key必须先经过base64 encode之后的ceph的keystring串,ceph-user-secret的namespace一定要和你对应的pvc的namespace一致。
相关文章推荐
- WPF中动态创建DataTemplate
- 【Objective-C Runtime动态加载】---动态创建类Class
- 使用反射创建动态程序集
- 动态创建Repeater模板
- Ext JS动态加载JavaScript创建窗体的方法
- [原]iOS动态特性初研究(利用JSON动态创建类型和对象)
- .NET中动态的创建新的文件夹
- C++之对象的动态创建和释放
- 动态创建 DLL
- jQuery中动态创建元素节点无法触发事件
- QML如何创建动态组件
- 动态创建分区函数
- Angular 4根据组件名称动态创建出组件的方法教程
- C#动态创建和动态使用程序集、类、方法、字段等(一)
- WinForm企业应用框架设计【四】动态创建业务窗体
- spring-amqp 动态创建queue、exchange、binding
- 输入数字动态创建行(二)
- MFC动态创建按钮及添加消息响应
- 动态创建数组
- 动态控件的创建和使用--动态按钮