kubernetes中如何使用rook-edgefs,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
创新互联公司专注于额济纳企业网站建设,响应式网站开发,商城网站定制开发。额济纳网站建设公司,为额济纳等地区提供建站服务。全流程定制设计,专业设计,全程项目跟踪,创新互联公司专业和态度为您提供的服务
环境ubuntu20 server, kubernetes 1.18+, rook 1.4, 镜像的科学环境
rook目录支持的stable储存方案有ceph, edgefs。edgefs用了下,感觉还更吃内存和cpu,现在已Deprecated,勿用。参考https://rook.io/docs/rook/v1.4/edgefs-quickstart.html
配置系统 sudo vi /etc/sysctl.conf
net.core.rmem_default = 80331648 net.core.rmem_max = 80331648 net.core.wmem_default = 33554432 net.core.wmem_max = 50331648 vm.dirty_ratio = 10 vm.dirty_background_ratio = 5 vm.swappiness = 15
使之生效 sudo sysctl -p
创建一个简单的EdgeFS Rook群集。根据实际情况编辑cluster.yaml文件,文档中有注释。比如dataDirHostPath: /data
sysRepCount: 2
,参考https://rook.io/docs/rook/v1.4/edgefs-cluster-crd.html
#先创建dataDirHostPath指定的目录 sudo mkdir /data
git clone --single-branch --branch release-1.4 https://github.com/rook/rook.git cd rook/cluster/examples/kubernetes/edgefs kubectl create -f operator.yaml kubectl create -f cluster.yaml
查看集群运行状态。运行结果,状态须为Running
$ kubectl -n rook-edgefs-system get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES rook-discover-nhxv4 1/1 Running 0 2m3s 10.244.1.98 ser40rook-discover-tprdl 1/1 Running 0 2m3s 10.244.0.162 ser30 rook-discover-wlgvz 1/1 Running 0 2m3s 10.244.2.24 ser50 rook-edgefs-operator-5d49489dbd-jqzgb 1/1 Running 0 2m44s 10.244.1.97 ser40
$ kubectl -n rook-edgefs get pod NAME READY STATUS RESTARTS AGE rook-edgefs-mgr-648457b454-s2hkr 3/3 Running 0 8m55s rook-edgefs-target-0 3/3 Running 0 8m55s rook-edgefs-target-1 3/3 Running 0 8m55s
初始化EdgeFShttps://rook.io/docs/rook/v1.4/edgefs-iscsi-crd.html
kubectl get po --all-namespaces | grep edgefs-mgr kubectl exec -it -n rook-edgefs rook-edgefs-mgr-648457b454-s2hkr -- env COLUMNS=$COLUMNS LINES=$LINES TERM=linux toolbox
6.0 查看节点状态
efscli system status
6.1 初始化EdgeFS集群
efscli system init
6.2 创建新的本地名称空间
efscli cluster create Hawaii
6.3 创建集群名称空间“夏威夷”的逻辑租户,如果需要,也可以进行存储
efscli tenant create Hawaii/Pepsi efscli bucket create Hawaii/Pepsi/bk1
6.4 创建service isc-pepsi
后面要用
efscli service create iscsi isc-pepsi efscli service serve isc-pepsi Hawaii/Pepsi/bk1/lun1 X-volsize=20G
6.5 集群运行后,创建NFS,SMB,S3或iSCSI存储,以供集群中的其他应用程序使用。本例使用iSCSI,具体各自需求。name属性为6.4创建的isc-pepsi
# cd rook/cluster/examples/kubernetes/edgefs # 修改sudo vi iscsi.yaml中的name为6.4定义好的service apiVersion: edgefs.rook.io/v1 kind: ISCSI metadata: name: isc-pepsi # this name has to match efscli service namespace: rook-edgefs
#应用修改 kubectl create -f iscsi.yaml
创建csi接口https://rook.io/docs/rook/v1.4/edgefs-csi.html
7.0 前提 如果你的kubernetes版本低的话,需要开启一些特性门控
。参考https://kubernetes.io/zh/docs/reference/command-line-tools-reference/feature-gates/,本例使用的1.8+,不用改
7.1 Kubernetes CSI drivers require CSIDriver and CSINodeInfo resource types to be defined on the cluster. Check if they are already defined:
kubectl get customresourcedefinition.apiextensions.k8s.io/csidrivers.csi.storage.k8s.io kubectl get customresourcedefinition.apiextensions.k8s.io/csinodeinfos.csi.storage.k8s.io
不存在,创建
kubectl create -f https://raw.githubusercontent.com/kubernetes/csi-api/release-1.13/pkg/crd/manifests/csidriver.yaml kubectl create -f https://raw.githubusercontent.com/kubernetes/csi-api/release-1.13/pkg/crd/manifests/csinodeinfo.yaml
7.2 安装工具,ubuntu20.04 server默认安装了
apt install -y open-iscsi
7.3 创建ISCSI驱动,我放在rook-edgefs命名空间下。需要编辑edgefs-iscsi-csi-driver.yaml中的default命名空间为rook-edgefs
cd cluster/examples/kubernetes/edgefs/csi/iscsi kubectl create ns rook-edgefs-csi kubectl -n rook-edgefs-csi create secret generic edgefs-iscsi-csi-driver-config --from-file=./edgefs-iscsi-csi-driver-config.yaml kubectl -n rook-edgefs-csi apply -f edgefs-iscsi-csi-driver.yaml
查看结果
$ kubectl get pods -n rook-edgefs-csi NAME READY STATUS RESTARTS AGE edgefs-iscsi-csi-controller-0 4/4 Running 0 11m edgefs-iscsi-csi-node-4f57b 2/2 Running 8 11m edgefs-iscsi-csi-node-lbgkp 2/2 Running 2 11m edgefs-iscsi-csi-node-qnjvn 2/2 Running 6 11m
创建一个动态预配置卷。parameters
就是步骤6创建好的,要对应
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: edgefs-iscsi-csi-storageclass provisioner: io.edgefs.csi.nfs parameters: segment: rook-edgefs service: isc-pepsi cluster: Hawaii tenant: pepsi bucket: bk1
使用刚创建的StorageClass
看完上述内容,你们掌握kubernetes中如何使用rook-edgefs的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!