news 2026/6/3 18:05:11

【技术】Harbor在ARM64上翻车了:不是配置问题,而是...

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【技术】Harbor在ARM64上翻车了:不是配置问题,而是...

关 键 词 :云原生/云计算/Kubernetes/Harbor/Redis/jemalloc/国产化

一、背景: 为什么要在ARM64上部署Harbor

最近在一套ARM64 鲲鹏920 CPU服务器上面部署Harbor,用途主要是为了支持国产化以及信创环境。

官方harbor 提供有离线安装包,但默认里面镜像是x86的,没有arm64的,所以先得解决arm64的镜像问题。

环境如下:

CPU: Kunpeng-920 arm64 OS : Kylin Linux Advanced Server V10 (Halberd) Harbor:2.12.x

部署方式采用的官方 harbor-offline-installer 方式(https://goharbor.io/docs/2.12.0/install-config/)

二、部署:基于官方harbor-offline-installer方式

System requirements:

On a Linux host:docker 20.10.10-ce+ and docker-compose 1.18.0+ .

Download binaries of **Harbor release **and followInstallation & Configuration Guideto install Harbor.

所以也就安装官方提供的方式部署了,但是harbor官方不提供arm的镜像,habor-offline-installer里面默认只有x86_64的离线镜像,所以这里找到 ghcr.io的镜像

docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/harbor-registryctl:v2.12.0 docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/nginx-photon:v2.12.0 docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/registry-photon:v2.12.0 docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/prepare:v2.12.0 docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/harbor-portal:v2.12.0 docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/harbor-log:v2.12.0 docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/harbor-exporter:v2.12.0 docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/redis-photon:v2.12.0 docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/trivy-adapter-photon:v2.12.0 docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/harbor-core:v2.12.0 docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/harbor-db:v2.12.0 docker pull --platform=linux/arm64 ghcr.io/octohelm/harbor/harbor-jobservice:v2.12.0 docker tag ghcr.io/octohelm/harbor/harbor-registryctl:v2.12.0 goharbor/harbor-registryctl:v2.12.0 docker tag ghcr.io/octohelm/harbor/nginx-photon:v2.12.0 goharbor/nginx-photon:v2.12.0 docker tag ghcr.io/octohelm/harbor/registry-photon:v2.12.0 goharbor/registry-photon:v2.12.0 docker tag ghcr.io/octohelm/harbor/prepare:v2.12.0 goharbor/prepare:v2.12.0 docker tag ghcr.io/octohelm/harbor/harbor-portal:v2.12.0 goharbor/harbor-portal:v2.12.0 docker tag ghcr.io/octohelm/harbor/harbor-log:v2.12.0 goharbor/harbor-log:v2.12.0 docker tag ghcr.io/octohelm/harbor/harbor-exporter:v2.12.0 goharbor/harbor-exporter:v2.12.0 docker tag ghcr.io/octohelm/harbor/redis-photon:v2.12.0 goharbor/redis-photon:v2.12.0 docker tag ghcr.io/octohelm/harbor/trivy-adapter-photon:v2.12.0 goharbor/trivy-adapter-photon:v2.12.0 docker tag ghcr.io/octohelm/harbor/harbor-core:v2.12.0 goharbor/harbor-core:v2.12.0 docker tag ghcr.io/octohelm/harbor/harbor-db:v2.12.0 goharbor/harbor-db:v2.12.0 docker tag ghcr.io/octohelm/harbor/harbor-jobservice:v2.12.0 goharbor/harbor-jobservice:v2.12.0

解决了镜像问题,其他安装官方文档继续部署就行。

💡直觉判断
官方方案 + 知名社区组织镜像,理论上不该有坑。

三、问题现象:Redis容器直接Crash

你会看到habor-core以及harbor-jobservice以及redis容器都是异常的,但根因是redis异常导致的。

#docker ps #redis 一直在重启 Restarting goharbor/redis-photon:v2.12.0 "docker-entrypoint.s…" 6 minutes ago Restarting (139) 19 seconds ago 查看日志报错如下: <jemalloc>: Unsupported system page size
四、根因分析:真正问题出在了哪里?

从英文表面上面看,原因是因为redis不支持当前系统的page size。

我用的系统是麒麟V10,默认的page size是64k

# getconf PAGE_SIZE 65536

harbor官方的redis镜像基于redis 6.0 源码 build,同时使用了jemalloc,看这样子只能说是编译的jemalloc 不支持64k了。

五、方案推荐:附自动化工具
5.1 短期方案

使用docker library的redis:latest ,经测试支持page size 64k.

5.2 长期方案

官方其实提供了arm64镜像的build 工具,在 https://github.com/goharbor/harbor-arm,

参考官方文档 ,默认编译的harbor 2.3 , 可以自行更改Makefile中的版本, 比如release-2.12.0

# first step: clone harbor ARM code git clone https://github.com/goharbor/harbor-arm.git #vim Makefile # execute build command:Download harbor source code cd harbor-arm && make download # compile redis: make compile_redis # Prepare to build arm architecture image data: make prepare_arm_data # Replace build arm image parameters: make pre_update # Compile harbor components: make compile COMPILETAG=compile_golangimage # Build harbor arm image: make build GOBUILDTAGS="include_oss include_gcs" BUILDBIN=true NOTARYFLAG=true TRIVYFLAG=true CHARTFLAG=true GEN_TLS=true PULL_BASE_FROM_DOCKERHUB=false

查看harbor-arm 中redis.spec中可以看到其实harbor官方编译jemalloc 已经使用了 --with-lg-page=16 (64KB) 了,所以其实使用harbor-arm官方的build镜像理应就可以支持64KB的page size,由于物理条件限制所以没有使用测试,大家可以试试~

附:

​ 经测试整理直接可用 harbor-offline-install下载地址:

我用夸克网盘分享了「harbor-offline-installer-v2.12.0-new.tgz」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。 链接:https://pan.quark.cn/s/38d925869d1b 提取码:e8SL

参考:

https://hub.docker.com/u/scalegriddevs

https://docker.aityp.com/r/ghcr.io/octohelm/harbor

https://github.com/goharbor/harbor-arm

https://blog.csdn.net/jiejiegua/article/details/135008833

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/31 15:36:59

HID协议中的描述符类型:通俗解释其硬件意义

HID协议中的描述符&#xff1a;不只是配置表&#xff0c;而是硬件与主机的“通用语言”你有没有遇到过这种情况——明明MCU已经把按键状态、坐标数据正确采集了&#xff0c;USB也能枚举成功&#xff0c;但电脑就是“看不见”你的鼠标移动&#xff1f;或者键盘按下去&#xff0c…

作者头像 李华
网站建设 2026/5/29 16:46:27

HTML转Figma工具:让网页设计与代码无缝衔接的终极解决方案

HTML转Figma工具&#xff1a;让网页设计与代码无缝衔接的终极解决方案 【免费下载链接】figma-html Builder.io for Figma: AI generation, export to code, import from web 项目地址: https://gitcode.com/gh_mirrors/fi/figma-html 还在为网页设计与代码之间的鸿沟而…

作者头像 李华
网站建设 2026/5/28 16:09:20

GPT-SoVITS语音合成延迟优化:实时应用场景可行吗?

GPT-SoVITS语音合成延迟优化&#xff1a;实时应用场景可行吗&#xff1f; 在AI虚拟主播、智能对话系统和个性化有声内容爆发的今天&#xff0c;用户不再满足于“能说话”的机器语音——他们想要的是像真人一样自然、富有情感且音色可定制的声音。GPT-SoVITS 正是在这一需求浪潮…

作者头像 李华
网站建设 2026/5/28 15:51:14

GPT-SoVITS模型训练权重初始化影响分析

GPT-SoVITS模型训练权重初始化影响分析 在AI语音技术飞速发展的今天&#xff0c;个性化语音合成已不再是高不可攀的技术壁垒。只需一分钟的语音样本&#xff0c;就能“克隆”出一个高度还原的音色——这正是 GPT-SoVITS 引发广泛关注的核心原因。作为当前少样本语音克隆领域的代…

作者头像 李华
网站建设 2026/5/28 22:22:58

12、Azure 虚拟机入门指南

Azure 虚拟机入门指南 1. Azure 虚拟机系列介绍 Azure 提供了多种系列的虚拟机,以满足不同的工作负载需求,以下是主要系列的详细介绍: - A 系列 : - 基础层(Basic tier) :经济实惠的通用选项,适用于不需要负载平衡、自动缩放或内存密集型的开发工作负载、测试服…

作者头像 李华
网站建设 2026/5/30 15:32:51

基于GPT-SoVITS的教育类语音合成系统构建案例

基于GPT-SoVITS的教育类语音合成系统构建实践 在智慧教育快速演进的今天&#xff0c;如何让技术真正服务于“因材施教”的本质&#xff0c;成为越来越多教育科技团队思考的核心问题。其中一个关键挑战是&#xff1a;如何以低成本、高效率的方式&#xff0c;为海量教学内容赋予“…

作者头像 李华