ceph查看卷_基于CEPH后端存储搭建Harbor
上一篇文章基于NFS后端存储搭建Harbor ,这一节来聊聊K8s
与CEPH
的对接以及基于CEPH Harbor
的构建。
因为资源的问题,测试环境仍然是K8s
的ALL-IN-ONE
环境,CEPH集群通过开源ROOK
来搭建,而Harbor
依然采用Helm
的安装方式。
1. CEPH集群的搭建
正常CEPH
集群的搭建可通过ceph-deploy、ceph-ansible
等工具来搭建,因为这里考虑到跟K8s
的对接最后是通过CNCF
下开源工具ROOK
来完成的。
1.1 部署ROOK系统
部署方式其实很简单,可参考如下步骤来完成:
# 下载rook源码,这里是使用的release-0.9分支
git clone -b release-0.9 https://github.com/rook/rook.git
cd rook/cluster/examples/kubernetes/ceph/
kubectl create -f operator.yaml
如此,部署成功后可以看到如下Pod
:
待这些Pod
都处于running
状态时即可开始CEPH
集群的搭建。
1.2 CEPH集群搭建
部署过程其实也很简单,首先依据自身环境修改rook/cluster/examples/kubernetes/ceph/cluster.yaml
文件,因为是在K8s集群搭建且只有一个节点,所以要做如下配置更改其实也就是对应cephcluster
资源的配置:
更新完成后保存,通过执行如下命令来开始搭建CEPH
集群:
cd rook/cluster/examples/kubernetes/ceph/
kubectl create -f cluster.yaml
首次搭建因为拉取镜像需要等待一段时间,我们可以通过命令watch "kubectl get pods -n rook-ceph"
来实时查看集群的构建状态,最终的呈现方式应该如下图所示:
搭建完成后不妨对ceph
集群做下简单测试。
1.3 测试
首先,我们需要创建StorageClass
和RBD POOL
:
cd cd rook/cluster/examples/kubernetes/ceph/
kubectl create -f storageclass.yaml
效果呈现如下图所示:
然后,创建一个测试的PVC
:
root@vinefu-dev:~# cat test_pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:name: test-claim
spec:accessModes:- ReadWriteOnceresources:requests:storage: 1GistorageClassName: rook-ceph-block
root@vinefu-dev:~#kubectl create -f test_pvc.yaml
查看一下PVC
的创建状态:
很显然已经创建成功且绑定到相应的卷,另外创建pvc
时有两点额外说明一哈:
- 因为
StorageClass
设置默认格式化卷的格式是xfs
,所以需要预先在K8s集群节点上安装xfsprogs
,命令apt-get install -y xfsprogs
安装即可; - 创建
PVC
指定卷大小时,由于xfs
的限制,数目不能小于16Mi
,否则会出现后续创建Pod volume mount failed
;
最后,创建一个测试的pod
:
root@vinefu-dev:~# cat test_pod.yaml
kind: Pod
apiVersion: v1
metadata:name: test-pod
spec:containers:- name: test-podimage: busyboxcommand:- "/bin/sh"args:- "-c"- "while true;do sleep 3600;done"volumeMounts:- name: test-pvcmountPath: "/mnt"restartPolicy: "Never"volumes:- name: test-pvcpersistentVolumeClaim:claimName: test-claim
root@vinefu-dev:~#kubectl create -f test_pod.yaml
验证一下结果:
如此,说明CEPH
集群搭建成功。
1.4 访问ceph管理界面
CEPH
集群搭建完毕后rook
会提供一个可视化的ceph
管理界面:
root@vinefu-dev:~/harbor-helm# kubectl get svc -n rook-ceph
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
rook-ceph-mgr ClusterIP 10.100.5.96 <none> 9283/TCP 26h
rook-ceph-mgr-dashboard NodePort 10.98.155.216 <none> 8443:31060/TCP 26h # ceph管理界面服务,这里采用nodePort的访问模式,对外暴露端口31060
rook-ceph-mon-b ClusterIP None <none> 6790/TCP 13h
root@vinefu-dev:~/harbor-helm#kubectl get secret -n rook-ceph
NAME TYPE DATA AGE
default-token-xbg57 kubernetes.io/service-account-token 3 26h
rook-ceph-dashboard-password kubernetes.io/rook 1 26h
rook-ceph-mgr-a kubernetes.io/rook 1 26h
rook-ceph-mgr-token-rvp82 kubernetes.io/service-account-token 3 26h
rook-ceph-mon kubernetes.io/rook 4 26h
rook-ceph-osd-token-jkj6f kubernetes.io/service-account-token 3 26h
root@vinefu-dev:~/harbor-helm# kubectl get secret rook-ceph-dashboard-password -n rook-ceph -o template --template='{{ .data.password }}{{"n"}}' | base64 -d
vrueIupYp7 # ceph管理界面登陆密码,而用户名默认admin
浏览器输入https://10.0.2.15:31060
访问ceph
管理界面:
1.5 安装toolbox
我们知道一般ceph
集群搭建完之后都是通过证书来客户端访问的,直接类似kubectl exec rook-ceph-mon-a-66f5f857fb-h5vfh -- rbd ls
的命令是无法查看ceph
集群的信息(因为其内部都没有对应的访问keyring),所以常常安装toolbox
来解决这一问题。
cd rook/cluster/examples/kubernetes/ceph
kubectl create -f toolbox.yaml
安装完之后便可以查看ceph
集群的相应信息啦:
root@vinefu-dev:~/rook/cluster/examples/kubernetes/ceph# kubectl get pod -n rook-ceph
NAME READY STATUS RESTARTS AGE
rook-ceph-mgr-a-95c6f694d-d99qf 1/1 Running 6 27h
rook-ceph-mon-a-66f5f857fb-h5vfh 1/1 Running 7 27h
rook-ceph-osd-0-745c8b4bc8-srl4g 1/1 Running 7 27h
rook-ceph-osd-prepare-vinefu-dev-sx2rx 0/2 Completed 0 3h39m
rook-ceph-tools-85c554456b-qbrwl 1/1 Running 8 24h
root@vinefu-dev:~/rook/cluster/examples/kubernetes/ceph# kubectl exec -n rook-ceph rook-ceph-tools-85c554456b-qbrwl -- rbd ls replicapool
pvc-33aac180-fd92-435c-aff4-789a674ba833
pvc-5d41d52a-b6ce-4790-b08c-b54cf0e7ba99
pvc-60c64e2b-f7b9-461c-9ade-36fb45d2bf01
pvc-ae03c5f6-6646-4581-a70f-3a40d10b28b2
pvc-b28a29e6-ba9b-4c46-bf65-433686b23934
pvc-dde322f8-5716-4db3-b10a-904e63320640
pvc-ef15814d-b7b3-41f8-bf9a-3cb57e9cee6e
root@vinefu-dev:~/rook/cluster/examples/kubernetes/ceph# kubectl exec -n rook-ceph rook-ceph-tools-85c554456b-qbrwl -- ceph mon stat
e1: 1 mons at {a=10.0.2.15:6790/0}, election epoch 17, leader 0 a, quorum 0 a
root@vinefu-dev:~/rook/cluster/examples/kubernetes/ceph# kubectl exec -n rook-ceph rook-ceph-tools-85c554456b-qbrwl -- ceph osd stat
1 osds: 1 up, 1 in; epoch: e87
root@vinefu-dev:~/rook/cluster/examples/kubernetes/ceph# kubectl exec -n rook-ceph rook-ceph-tools-85c554456b-qbrwl -- ceph osd status
+----+------------+-------+-------+--------+---------+--------+---------+-----------+
| id | host | used | avail | wr ops | wr data | rd ops | rd data | state |
+----+------------+-------+-------+--------+---------+--------+---------+-----------+
| 0 | vinefu-dev | 22.2G | 36.5G | 0 | 20.8k | 1 | 0 | exists,up |
+----+------------+-------+-------+--------+---------+--------+---------+-----------+
root@vinefu-dev:~/rook/cluster/examples/kubernetes/ceph# kubectl exec -n rook-ceph rook-ceph-tools-85c554456b-qbrwl -- ceph df
GLOBAL:SIZE AVAIL RAW USED %RAW USED59 GiB 37 GiB 22 GiB 37.87
POOLS:NAME ID USED %USED MAX AVAIL OBJECTSreplicapool 3 442 MiB 1.27 34 GiB 203
root@vinefu-dev:~/rook/cluster/examples/kubernetes/ceph#
2. 基于CEPH来搭建Harbor
这里依然通过helm
来安装Harbor
,步骤基本上跟基于NFS
搭建Harbor
一致,只是配置要做稍微变动。
另外,这里Registry
的访问采用了证书访问的方式,因此配置上也要做相应的更新:
# harbor-helm/values.yaml更改项
expose.type: nodePort
expose.tls.enabled: true
expose.tls.commonName: "10.0.2.15" # 主机节点ip即可
externalURL: https://10.0.2.15:30003 # 注意该端口号一定要写上
persistence.persistentVolumeClaim.registry.storageClass: "rook-ceph-block"
persistence.persistentVolumeClaim.redis.storageClass: "rook-ceph-block"
persistence.persistentVolumeClaim.chartmuseum.storageClass: "rook-ceph-block"
persistence.persistentVolumeClaim. jobservice.storageClass: "rook-ceph-block"
persistence.persistentVolumeClaim.database.storageClass: "rook-ceph-block"
然后通过命令helm install --name my-harbor .
来完成安装即可。 浏览器输入https://10.0.2.15:30003
便可访问Harbor
界面。
Docker客户端上传镜像至Harbor
由于我们设置时证书访问的模式,首先需要将Harbor registry
根证书拷贝到docker
客户端,根证书可以在Harbor
界面下载:
然后拷贝到docker
客户端:
mkdir -p /etc/docker/certs.d/10.0.2.15:30003
cp ca.crt /etc/docker/certs.d/10.0.2.15:30003/
docker login 10.0.2.15:30003 # 用户名和密码默认admin、Harbor12345
如此便可以通过docker
客户端向Harbor push/pull
镜像了。
至于Charts
的处理在前文中已经讲解,此处不作赘述。
3. 扩展
本文只是简单阐述在一个单节点K8s
集群搭建基于CEPH
后端存储Harbor
的过程,实际使用中不管是CEPH集群还是Harbor一般都会独立出来且要做高可用处理来避免单点故障,至于方案也有很多本文就暂且不做深入了。
ceph查看卷_基于CEPH后端存储搭建Harbor相关推荐
- ceph查看卷_理解 QEMU/KVM 和 Ceph(3):存储卷挂接和设备名称
本系列文章会总结 QEMU/KVM 和 Ceph 之间的整合: 这篇文章分析一下一个 Ceph RBD 卷是如何被映射到一个 QEMU/KVM 客户机的,以及客户机中设备的命名问题. 1. 遇到的设备 ...
- ceph查看卷_k8s使用ceph存储,查找存储卷对应关系。
The mapping in Kubernetes is the following: PVC kubectl get pv 获取所有的pv rbd ls kubernetes 查看所有 k8s在ce ...
- sqlserver date类型和字符串比较_基于SQL Server数据库搭建主从复制实现读写分离实战演练...
一.课程介绍 读写分离(主从同步)从字面意思就可以理解,就是把对数据库的读操作和写操作分离开.读写分离在网站发展初期可以一定程度上缓解读写并发时产生锁的问题,将读写压力分担到多台服务器上.读写分离的基 ...
- 甲骨文云上使用arm架构实例和对象存储搭建Harbor
今天尝试使用甲骨文云的arm实例(4ocpus+24Gb memory)搭建Harbor,并且存储使用甲骨文云兼容S3协议的对象存储. 事情准备 准备好arm架构的实例,防火墙开放80和443端口,设 ...
- haproxy负载均衡_基于mycat+haproxy+keepalived搭建mysql数据库高可用负载均衡
概述 目前业界对数据库性能优化普遍采用集群方式,而oracle集群软硬件投入昂贵,mysql则比较推荐用mycat去搭建数据库集群,下面介绍一下怎么用mycat+haproxy+keepalived搭 ...
- hadoop hive集群_基于伪分布式Hadoop搭建Hive平台详细教程
一.搭建环境的前提条件 环境:Linux系统 Hadoop-2.6.0 MySQL 5.6 apache-hive-2.3.7 这里的环境不一定需要和我一样,基本版本差不多都ok的,所需安装包和压缩包 ...
- 1万并发服务器配置_小程序后端服务器搭建:云服务器配置(1)
起因最近在搞小程序,有一个留言与图片上传并展示的功能,用小程序自带云服务器也可以实现,但如果与别的端进行多端互动就需要一个服务器来做为后端,进行图片与留言的上传,并把留言内容和上传后的图片地址保存到s ...
- java人脸识别快速搭建_基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
基于 作为一个图像处理的爱好者,怎能放过人脸识别这一环呢!调研开搞,发现了超实用的 Facecognition人脸识别原理大体可分为: 1.通过hog算子定位人脸,也可以用cnn模型,但本文没试过: ...
- cinder与ceph的区别_配置cinder-volume服务使用ceph作为后端存储
在ceph监视器上执行 CINDER_PASSWD='cinder1234!' controllerHost='controller' RABBIT_PASSWD='0penstackRMQ' 1.创 ...
最新文章
- 推荐!神经进化才是深度学习未来的发展之路!
- PL/SQL 使用文档——表注释、显示乱码
- strtus2改成springboot_jdk1.6环境下struts2改spring boot方案
- mysql之主从复制 简书_MySQL主从复制(传统)
- innerHTML的用法
- [线性代数]Note4--A的LU分解转置-置换-向量空间
- Qt-VS开发:解决VS中使用带有信号槽的导出对象库时,信号槽不工作的问题
- java开发文档怎么写_程序员该不该写技术文档,怎么写文档,易懂又能提升自己...
- 多系统并行服务器,具有分布式并行I/O接口的分布式并行服务器系统的性能研究...
- (18)FPGA面试技能提升篇(CACHE、MMU、DMA)
- 理解BERT每一层都学到了什么
- 实现横向排列的几种方案
- Linux用户态进程的内存管理浅析
- FIT2CLOUD飞致云旗下多云管理平台完成华为FusionCompute兼容性测试
- PEST、波特五力、波士顿矩阵、SWOT、价值链等战略分析方法整理学习笔记
- JAVA最全最细基础知识点
- Visual Studio Qt vs tools 下载教程及加速教程
- python从键盘上输入10个数、求其平均值_从键盘上循环输入10个数,求其平均值,并打印输出....
- 【AD封装】插件电阻贴片电阻排阻分装(带3D)
- 阿里云服务器如何防DDOS攻击