一、准备工作
Ceph版本:v13.2.5模仿稳定版
1, Ceph上准备存储池
<代码> [root@ceph-node1 ceph] # ceph osd池创建k8 128 128 池创建的“美丽” ls (root@ceph-node1 ceph) # ceph osd池 k8 代码>
2, Ceph上准备k8客户端账号
本环境中直接使用了Ceph的管理账号,当然生产环境中还是要根据不同功能客户端分配不同的账号:
<代码> Ceph auth get-or-create客户机。k8 mon允许r的osd的允许rwx池=k8 ' - o ceph.client.k8s.keyring 代码>
获取账号的密钥:
<代码> [root@ceph-node1 ceph] # ceph客户身份验证获取密钥。管理| base64 QVFDMmIrWmNEL3JTS2hBQWwwdmR3eGJGMmVYNUM3SjdDUGZZbkE9PQ==代码>
3,为controller-manager提供rbd命令
使用StorageClass动态创建PV时,controller-manager会自动在Ceph上创建形象,所以我们要为其准备好rbd命令。
(1)如果集群是用kubeadm部署的,由于controller-manager官方镜像中没有rbd命令,所以我们要导入外部配置:
<代码>:ClusterRole apiVersion: rbac.authorization.k8s.io/v1 元数据: 名称:rbd-provisioner 规则: - apiGroups: ["] 资源(“persistentvolumes”): 动词:[“获得”,“列表”,“看”,“创造”,“删除”) - apiGroups: ["] 资源(“persistentvolumeclaims”): 动词:[“获得”,“列表”,“看”,“更新”) ——apiGroups (“storage.k8s.io”): 资源(“storageclasses”): 动词:[“获得”,“列表”,“看”) - apiGroups: ["] 资源(“事件”): 动词:[“创造”、“更新”、“补丁”) - apiGroups: ["] 资源(“服务”): resourceNames:(“kube-dns”、“coredns”) 动词:[“名单”,“获得”) --- :ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 元数据: 名称:rbd-provisioner 主题: 类型:ServiceAccount 名称:rbd-provisioner 名称空间:默认 roleRef: :ClusterRole 名称:rbd-provisioner apiGroup: rbac.authorization.k8s.io --- apiVersion: rbac.authorization.k8s.io/v1 类型:角色 元数据: 名称:rbd-provisioner 规则: - apiGroups: ["] 资源(“秘密”): 动词(“获得”): - apiGroups: ["] 资源(“端点”): 动词:[“获得”,“列表”,“看”,“创造”,“更新”,“补丁”) --- apiVersion: rbac.authorization.k8s.io/v1 :RoleBinding 元数据: 名称:rbd-provisioner roleRef: apiGroup: rbac.authorization.k8s.io 类型:角色 名称:rbd-provisioner 主题: 类型:ServiceAccount 名称:rbd-provisioner 名称空间:默认 ---/v1beta1 apiVersion:扩展 :部署 元数据: 名称:rbd-provisioner 规范: 副本:1 策略: 类型:重建 模板: 元数据: 标签: 应用:rbd-provisioner 规范: 容器: ——名称:rbd-provisioner 图片:quay.io/external_storage rbd-provisioner:最新 env: ——名称:PROVISIONER_NAME 价值:ceph.com/rbd serviceAccount: rbd-provisioner --- apiVersion: v1 :ServiceAccount 元数据: 名称:rbd-provisioner 代码>
- f rbd-provisioner kubectl适用。yaml
注意:rbd-provisioner的镜像要和ceph的版本适配,这里镜像使用最新的,根据官方提示已支持ceph模仿版。
美丽使用Ceph RBD作为后端存储