部署csi-cephfs
0. 说明
要求Kubernetes的版本在1.11及以上,k8s集群必须允许特权Pod(privileged pods),即apiserver和kubelet需要设置--allow-privileged为true。节点的Docker daemon需要允许挂载共享卷。
涉及镜像
quay.io/k8scsi/csi-provisioner:v0.3.0
quay.io/k8scsi/csi-attacher:v0.3.0
quay.io/k8scsi/driver-registrar:v0.3.0
quay.io/cephcsi/cephfsplugin:v0.3.0
1. 部署RBAC
部署service accounts, cluster roles 和 cluster role bindings,这些可供RBD和CephFS CSI plugins共同使用,他们拥有相同的权限。
$ kubectl create -f csi-attacher-rbac.yaml
$ kubectl create -f csi-provisioner-rbac.yaml
$ kubectl create -f csi-nodeplugin-rbac.yaml1.1. csi-attacher-rbac.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: csi-attacher
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: external-attacher-runner
rules:
- apiGroups: [""]
resources: ["events"]
verbs: ["get", "list", "watch", "update"]
- apiGroups: [""]
resources: ["persistentvolumes"]
verbs: ["get", "list", "watch", "update"]
- apiGroups: [""]
resources: ["nodes"]
verbs: ["get", "list", "watch"]
- apiGroups: ["storage.k8s.io"]
resources: ["volumeattachments"]
verbs: ["get", "list", "watch", "update"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: csi-attacher-role
subjects:
- kind: ServiceAccount
name: csi-attacher
namespace: default
roleRef:
kind: ClusterRole
name: external-attacher-runner
apiGroup: rbac.authorization.k8s.io1.2. csi-provisioner-rbac.yaml
1.3. csi-nodeplugin-rbac.yaml
2. 部署CSI sidecar containers
通过StatefulSet的方式部署external-attacher和external-provisioner供CSI CephFS使用。
2.1. csi-cephfsplugin-provisioner.yaml
2.2. csi-cephfsplugin-attacher.yaml
3. 部署CSI-CephFS-driver(plugin)
csi-cephfs-plugin 的作用类似nfs-client,部署在所有node节点上,执行ceph的挂载等相关任务。
通过DaemonSet的方式部署,其中包括两个容器:CSI driver-registrar 和 CSI CephFS driver。
3.1. csi-cephfsplugin.yaml
4. 确认部署结果
参考文档:
https://github.com/ceph/ceph-csi
https://github.com/ceph/ceph-csi/blob/master/docs/deploy-cephfs.md
https://github.com/ceph/ceph-csi/tree/master/deploy/cephfs/kubernetes
最后更新于
这有帮助吗?