《Kubernetes部署篇:基于麒麟V10+ARM64架构部署harbor v2.4.0镜像仓库》
总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:企业级K8s集群运维实战
一、环境信息
| K8S版本 | 操作系统 | CPU架构 | 服务版本 |
|---|---|---|---|
| 1.26.15 | Kylin Linux Advanced Server V10 | ARM64 | harbor v2.4.0 |
二、部署操作
2.1、资源包下载
说明:如果你从别处找来的镜像,redis提示报错ignore-warnings ARM64-COW-BUG,可以重新编译redis镜像。当前资源已经是重新编译过了,可以正常使用的镜像。

2.2、生成https证书
1、配置hosts
192.168.1.188 server.harbor.com
2、生成CA证书私钥和CA证书
openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -sha512 -days 3650 \-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=server.harbor.com" \-key ca.key \-out ca.crt
说明:通过 ca.key 文件生成一个 crt 文件,CA 证书后面用来签署服务器证书。
3、生成服务器证书私钥
openssl genrsa -out server.harbor.com.key 4096
4、生成签名请求文件
openssl req -sha512 -new \-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=server.harbor.com" \-key server.harbor.com.key \-out server.harbor.com.csr
说明:通过 server.harbor.com生成签名请求文件 CSR。
5、生成x509 v3扩展文件
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names[alt_names]
DNS.1=server.harbor.com
DNS.2=192.168.1.188
EOF
6、生成服务器证书
openssl x509 -req -sha512 -days 3650 \-extfile v3.ext \-CA ca.crt -CAkey ca.key -CAcreateserial \-in server.harbor.com.csr \-out server.harbor.com.crt
2.3、配置Docker证书
说明:配置Docker客户端以便它能够安全地与使用了自签名证书的Harbor仓库进行通信。默认情况下,Docker客户端在尝试与仓库通信时,会检查仓库的SSL证书是否由一个受信任的证书颁发机构(CA)签发。如果证书是自签名的(如Harbor的默认设置),Docker客户端将拒绝连接,因为它不信任该证书。
1、将server.harbor.com.crt转换为server.harbor.com.cert,供 Docker 使用
说明:Docker守护程序将 .crt 文件解释为CA证书,并将 .cert 文件解释为客户端证书。
openssl x509 -inform PEM -in server.harbor.com.crt -out server.harbor.com.cert
2、复制证书到指定位置
说明:将服务器证书、服务器私钥和CA文件复制到Harbor主机上的Docker证书文件夹中。必须首先创建适当的文件夹。
# 创建目录
mkdir -p /etc/docker/certs.d/server.harbor.com
# 如果不是使用443端口,则需要在后面指定使用的具体端口,例如8001
mkdir -p /etc/docker/certs.d/server.harbor.com:9443cp server.harbor.com.cert /etc/docker/certs.d/server.harbor.com:9443/
cp server.harbor.com.key /etc/docker/certs.d/server.harbor.com:9443
cp ca.crt /etc/docker/certs.d/server.harbor.com:9443
如下图所示:

3、重启docker
systemctl restart docker
2.4、部署harbor
1、解压harbor安装包
tar axf harbor-offline-installer-v2.4.0-arm64.tgz
cd harbor
2、导入镜像
docker load -i harbor.v2.4.0.tar.gz
3、编辑harbor.yml文件
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
如下所示:
hostname: server.harbor.com
http:port: 9800
https:port: 9443certificate: /data/pkgs/harbor/server.harbor.com.crtprivate_key: /data/pkgs/harbor/server.harbor.com.key
harbor_admin_password: Harbor12345
database:password: n714aSP3RT
data_volume: /data/basic-data/harbor/harbor-data
log:local:location:/data/basic-data/harbor/harbor-log
4、执行安装脚本
./install.sh
执行完成后,如下所示:

浏览器登陆https://192.168.1.188:9443,如下所示:

2.5、containerd接入harbor
说明:以下操作在所有containerd主机上执行。
1、配置hosts
192.168.1.188 server.harbor.com
2、编辑配置文件/etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri".registry]config_path = ""[plugins."io.containerd.grpc.v1.cri".registry.auths][plugins."io.containerd.grpc.v1.cri".registry.configs][plugins."io.containerd.grpc.v1.cri".registry.configs."server.harbor.com:9443".tls]insecure_skip_verify = true[plugins."io.containerd.grpc.v1.cri".registry.configs."server.harbor.com:9443".auth]username = "admin"password = "Harbor12345"[plugins."io.containerd.grpc.v1.cri".registry.headers][plugins."io.containerd.grpc.v1.cri".registry.mirrors][plugins."io.containerd.grpc.v1.cri".registry.mirrors."server.harbor.com:9443"]endpoint = ["https://server.harbor.com:9443"][plugins."io.containerd.grpc.v1.cri".x509_key_pair_streaming]tls_cert_file = ""tls_key_file = ""
如下图所示:

3、重启containerd服务
systemctl daemon-reload && systemctl restart containerd.service
2.6、推送和拉取私有镜像
2.6.1、推送私有镜像
1、使用docker login命令进行登录
echo Harbor12345 | docker login -u admin --password-stdin https://server.harbor.com:9443
docker login会在当前用户家目录下生成~/.docker/config.json,可以根据该文件制作镜像拉取凭证如下所示:
[root@arm-2 ~]# cat ~/.docker/config.json
{"auths": {"server.harbor.com:9443": {"auth": "YWRtaW46SGFyYm9yMTIzNDU="}}
2、使用docker服务的doker push命令上传镜像
docker pull docker.io/library/nginx:1.25.4
docker tag docker.io/library/nginx:1.25.4 server.harbor.com:9443/library/nginx:1.25.4
docker push server.harbor.com:9443/library/nginx:1.25.4
如下图所示,则表示push成功

2.6.2、拉取私有镜像
ctr image pull --user "admin:Harbor12345" --skip-verify server.harbor.com:9443/library/nginx:1.25.4
如下图所示:

总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:企业级K8s集群运维实战
相关文章:
《Kubernetes部署篇:基于麒麟V10+ARM64架构部署harbor v2.4.0镜像仓库》
总结:整理不易,如果对你有帮助,可否点赞关注一下? 更多详细内容请参考:企业级K8s集群运维实战 一、环境信息 K8S版本 操作系统 CPU架构 服务版本 1.26.15 Kylin Linux Advanced Server V10 ARM64 harbor v2.4.0 二、部…...
远程工作/线上兼职网站整理(数字游民友好)
文章目录 国外线上兼职网站fiverrupwork 国内线上兼职网站甜薪工场猪八戒网云队友 国外线上兼职网站 fiverr https://www.fiverr.com/start_selling?sourcetop_nav upwork https://www.upwork.com/ 国内线上兼职网站 甜薪工场 https://www.txgc.com/ 猪八戒网 云队友 …...
elasticsearch7.15实现用户输入自动补全
Elasticsearch Completion Suggester(补全建议) Elasticsearch7.15安装 官方文档 补全建议器提供了根据输入自动补全/搜索的功能。这是一个导航功能,引导用户在输入时找到相关结果,提高搜索精度。 理想情况下,自动补…...
掌握正则表达式的力量:全方位解析PCRE的基础与进阶技能
Perl 兼容正则表达式(PCRE)是 Perl scripting language 中所使用的正则表达式语法标准。这些正则表达式在 Linux 命令行工具(如 grep -P)及其他编程语言和工具中也有广泛应用。以下是一些基础和进阶特性,帮你掌握和使用…...
FastFM库,一款强大神奇的Python系统分析预测的工具
FastFM库概述 在机器学习领域,Factorization Machines(FM)是处理稀疏数据集中特征间交互的重要工具.Python的fastFM库提供了高效的实现,特别适合用于推荐系统、评分预测等任务.本文将全面介绍fastFM的安装、特性、基本和高级功能,并结合实际应用场景展示…...
R语言绘图 --- 饼状图(Biorplot 开发日志 --- 2)
「写在前面」 在科研数据分析中我们会重复地绘制一些图形,如果代码管理不当经常就会忘记之前绘图的代码。于是我计划开发一个 R 包(Biorplot),用来管理自己 R 语言绘图的代码。本系列文章用于记录 Biorplot 包开发日志。 相关链接…...
用于日常任务的实用 Python 脚本
Python 是一种多功能编程语言,以其简单易读而闻名。它广泛应用于从 Web 开发到数据分析等各个领域。Python 脚本,它们可以通过自动执行常见任务来使您的生活更轻松。 用于日常任务的实用 Python 脚本 1. 使用 Pandas 进行数据分析2. 使用 BeautifulSoup …...
7-Zip是什么呢
1. 简介 7-Zip 是一个功能强大、免费开源的文件压缩和解压缩工具,适用于个人用户和企业用户,可以在多种操作系统上进行使用,并且支持广泛的压缩格式和高级功能。 2. 特点与优势 开源免费:7-Zip 是免费的开源软件,可…...
Satellite Stereo Pipeline学习
1.在Anaconda某个环境中安装s2p pip install s2p 2.在Ubuntu系统中安装s2p源代码 git clone https://github.com/centreborelli/s2p.git --recursive cd s2p pip install -e ".[test]" 3.在s2p中进行make all处理 中间会有很多情况,基本上哪个包出问题…...
linux-gpio
在Linux shell中测试GPIO通信,通常需要使用GPIO的设备文件,这些文件通常位于/sys/class/gpio目录下。要使用特定的GPIO引脚,比如GPIO92,你需要执行以下步骤: 导出GPIO引脚:首先,需要确保GPIO92已…...
C# 代码配置的艺术
文章目录 1、代码配置的定义及其在软件工程中的作用2、C# 代码配置的基本概念和工具3、代码配置的实践步骤4、实现代码配置使用属性(Properties)使用配置文件(Config Files)使用依赖注入(Dependency Injection…...
268 基于matlab的模拟双滑块连杆机构运动
基于matlab的模拟双滑块连杆机构运动,并绘制运动动画,连杆轨迹可视化输出,并输出杆件质心轨迹、角速度、速度变化曲线。可定义杆长、滑块速度,滑块初始位置等参数。程序已调通,可直接运行。 268 双滑块连杆机构运动 连…...
进口铝合金电动隔膜泵
进口铝合金电动隔膜泵是一种高效、可靠的工业泵,其特点、性能与应用广泛,以下是对其的详细分析: 特点 材质与结构: 采用铝合金材料制造,具有良好的耐腐蚀性和轻量化特点。铝合金材质使得泵体结构紧凑、轻便ÿ…...
G4 - 可控手势生成 CGAN
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目录 代码总结与心得 代码 关于CGAN的原理上节已经讲过,这次主要是编写代码加载上节训练后的模型来进行指定条件的生成 图像的生成其实只需要使用…...
使用 DuckDuckGo API 实现多种搜索功能
在日常生活中,我经常使用搜索引擎来查找信息,如谷歌和百度。然而,当我想通过 API 来实现这一功能时,会发现这些搜索引擎并没有提供足够的免费 API 服务。如果有这样的免费 API, 就能定时获取“关注实体”的相关内容,并…...
【DrissionPage爬虫库 1】两种模式分别爬取Gitee开源项目
文章目录 DrissionPage爬虫库简介1. 浏览器操控模式(类似于游戏中的后台模拟鼠标键盘)2. 数据包收发模式(类似于游戏中的协议封包) 实战中学习需求:爬取Gitee开源项目的标题与描述解决方案1:用数据包方式获…...
leetcode 115.不同的子序列
思路:LCS类dp 这道题的思考思路其实就是把以两个字符串结尾作为状态方程。 dp[i][j]的意义就是在s字符串在以s[i]结尾的字符串的情况下,所能匹配出t字符串以t[j]结尾的字符串个数。 本质上其实是一个LCS类的状态方程,只不过是意义不一样了…...
二叉树的顺序实现-堆
一、什么是堆 在数据结构中,堆(Heap)是一种特殊的树形数据结构,用数组存储,通常被用来实现优先队列。 堆具有以下特点: 堆是一棵完全二叉树(Complete Binary Tree),即…...
【Maven】Maven主要知识点目录整理
1. Maven的基本概念 作者相关文章链接: 1、【Maven】简介_下载安装-CSDN博客 定义:Maven是Apache的一个开源项目,是Java开发环境中用于管理和构建项目,以及维护依赖关系的强大软件项目管理工具。作用:简化了项目依赖…...
Coolmuster Android Assistant: 手机数据管理的全能助手
在数字化时代,智能手机不仅是通讯工具,更是个人数据的中心。随着数据量的不断增加,如何有效管理和保护这些数据成为了一个重要议题。Coolmuster Android Assistant应运而生,它是一款专为安卓用户设计的综合数据管理软件࿰…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
