你们好!我是李大白,一名容器运维工程师。本篇文章是《Harbor大白话(企业级)》专栏的内容,更多Harbor的知识欢迎查看个人主页!css
本篇文章主要分享我在工做中遇到的Harbor没法登陆的问题,由于当时没来得及记录文档,本篇文章就按我当时遇到的状况复现问题,而后去排查缘由。python
一、环境说明
个人harbor环境为:linux
- 操做系统:CentOS-7.8
- Harbor版本:2.3.1
- Harbor安装方式: 离线安装
- Harbor主机IP:192.168.2.250
使用安全加密的访问方式,admin密码是默认的Harbor12345。docker
二、问题描述
快下班的时候,开发组的同事在将编译好的镜像上传到Harbor的时候,怎么都上传不成功,提示用户名或者密码不正确。看到这你的想法是否是也认为密码输错了。 我当时也是这么认为的,跟开发说你密码错了,开发是很确定的说密码没错,刚才还能够呢!json
因而我考虑到登陆Harbor UI管理界面看看。登陆时我也傻眼了,我admin都不能登陆!报错截图:centos
三、问题排查
登陆Harbor主机安全
$ ssh 192.168.2.250
$ cd /app/harbor/
$ ls
common docker-compose.yml install.sh metrics.txt muli.com.key
common.sh harbor.yml LICENSE muli.com.crt prepare
data harbor.yml.tmpl manifest.json muli.com.csr repositories
查看Harbor的服务状态服务器
Failed to write all bytes for _asyncio.cpython-37m-x86_64-linux-gnu.so
fwrite: No space left on device
意思是: 没法写入_asyncio的全部字节。cpython-37m-x86_64-linux-gnu。设备上没有剩余空间app
查看主机磁盘空间运维
[root@Over harbor]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 17G 17G 20K 100% /
devtmpfs devtmpfs 899M 0 899M 0% /dev
tmpfs tmpfs 911M 0 911M 0% /dev/shm
tmpfs tmpfs 911M 12M 900M 2% /run
tmpfs tmpfs 911M 0 911M 0% /sys/fs/cgroup
/dev/sdb1 xfs 50G 50G 44K 100% /app
/dev/sr0 iso9660 8.8G 8.8G 0 100% /mnt/dvd
tmpfs tmpfs 183M 0 183M 0% /run/user/0
overlay overlay 17G 17G 20K 100% /var/lib/docker/overlay2/1cb808f1159bb52eca76c5f8b593746960c90baa1da26660e440f43040d9366a/merged
能够看到跟目录和/app目录的磁盘空间都已经满了,接下来怎么办?天然是清理磁盘空间了。
四、总结
由于本篇文章是将问题复现出来,没法彻底展示当时的问题。我是将一些文件复制到数据目录下,将数据目录占满来复现问题。要解决问题只要将这些大文件删除就能够解决。
可是在生产环境遇到的问题是,Harbor是一台独立的服务器,目录下都是Harbor的核心数据,若是删除将会引发Harbor更加麻烦的问题。那还有什么办法呢?
Harbor中占用磁盘空间比较大的数据天然就是镜像了,由于开发会一直将镜像上传到Harbor中,磁盘空间天然就会愈来愈小了。
咱们能够在Harbor的UI界面将一些旧版本、废弃的镜像删除,而后进行垃圾回收机制来释放磁盘空间了(只删除镜像没法释放磁盘空间)。
然而,向遇到的这种问题,Harbor的UI界面都进不去,怎么删除镜像?怎么垃圾回收?
我当时的解决办法是调用Harbor的API来删除过时版本的镜像,而后垃圾回收来释放磁盘空间。
关于删除镜像、垃圾回收涉及Harbor较多的知识点,博主会在下篇文章中单独、详细的分享,本篇文章是在从实际工做的业务场景中来更加的理解Harbor。为下篇文章作铺垫。