云原生Kubernetes: K8S 1.29版本 部署Harbor

目录

一、实验

1.环境

2.Linux 部署docker compose

3.证书秘钥配置

4.K8S 1.29版本 部署Harbor

5.K8S 1.29版本 使用Harbor

二、问题

1.docker 登录harbor失败


一、实验

1.环境

(1)主机

表1 主机

主机架构版本IP备注
masterK8S master节点1.29.0192.168.204.8

node1K8S node节点1.29.0192.168.204.9
node2K8S node节点1.29.0192.168.204.10已部署Kuboard

(2)master节点查看集群

1)查看node
kubectl get node2)查看node详细信息
kubectl get node -o wide

(3)查看pod

[root@master ~]# kubectl get pod -A

(4) 访问Kuboard

http://192.168.204.10:30080/kuboard/cluster

查看节点

(5)查看docker版本

docker -v

master节点

node1节点

node2节点

2.Linux 部署docker compose

(1) 查阅

https://github.com/docker/compose/releases

最新版为v2.27.0

(2) 下载

https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-linux-x86_64

(3) 查看

[root@master ~]# ls | grep docker

(4)移动并更名为docker-compose

[root@master ~]# mv docker-compose-linux-x86_64 /usr/bin/docker-compose

(5)为二进制文件添加可执行权限

[root@master ~]# chmod +x /usr/bin/docker-compose

(6)查看docker-compse版本

[root@master ~]# docker-compose version

 3.证书秘钥配置

(1)确认openssl

[root@master harbor]# rpm -q openssl

(2)创建文件夹用于存放生成的证书秘钥文件

[root@master ~]# mkdir -p /harbor/certs/

(3) 生成私钥

[root@master ~]# openssl genrsa -out ca.key 4096

(4)证书秘钥与IP绑定

openssl req -x509 -new -nodes -sha512 -days 3650 \-subj "/C=CN/ST=Nanjing/L=Nanjing/O=example/OU=Personal/CN=192.168.204.8" \-key ca.key \-out ca.crt

(5)移动证书位置并查看

[root@master ~]# mv ca* /harbor/certs
[root@master ~]# ls /harbor/certs/

4.K8S 1.29版本 部署Harbor

(1) 查阅

https://github.com/goharbor/harbor/releases

最新版为v2.10.2

(2) 下载

https://github.com/goharbor/harbor/releases/download/v2.10.2/harbor-offline-installer-v2.10.2.tgz

(3)查看

[root@master ~]# ls | grep harbor

(4)解压

[root@master ~]# tar xf harbor-offline-installer-v2.10.2.tgz

(6)进入目录并查看

[root@master ~]# cd harbor/
[root@master harbor]# ls

(7) 修改名称

[root@master harbor]# mv harbor.yml.tmpl harbor.yml

(8)监听端口

8800与8443没有被占用

[root@master harbor]# netstat -antlp | grep 8800
[root@master harbor]# netstat -antlp | grep 8443

(9)修改配置文件

[root@master harbor]# vim harbor.yml 

hostname域名修改为要安装harbor的服务器的ip
http端口修改为8800
https端口修改为8443
certificate: 证书路径修改为/harbor/certs/ca.crt
private_key: 秘钥路径修改为/harbor/certs/ca.key
harbor_admin_password: 默认Harbor密码,不修改,就用默认的Harbor12345
data_value: 修改为/data/harbor

修改前:

修改后:

(10)Docker  Hub查看镜像

docker pull goharbor/prepare:v2.10.2

(11)拉取镜像

 node2

[root@node2 ~]# docker pull goharbor/prepare:v2.10.2

(12) 导出镜像

[root@node2 ~]# docker save -o prepare.tar goharbor/prepare:v2.10.2

(13)复制Docker镜像到master节点

[root@node2 ~]# scp prepare.tar root@master:~

(14)master节点导入Docker镜像

[root@master ~]# docker load -i prepare.tar 

(15)执行预备脚本

[root@master harbor]# ./prepare 

(16) 执行安装脚本

[root@master harbor]# ./install.sh [Step 0]: checking if docker is installed ...Note: docker version: 24.0.7[Step 1]: checking docker-compose is installed ...Note: Docker Compose version v2.21.0[Step 2]: loading Harbor images ...
a8840e4ae316: Loading layer [==================================================>]  21.63MB/21.63MB
515f0ee642d6: Loading layer [==================================================>]  173.8MB/173.8MB
7e1a15fa7f7c: Loading layer [==================================================>]   25.5MB/25.5MB
4cd39a5aa67d: Loading layer [==================================================>]  18.27MB/18.27MB
3daae6a42996: Loading layer [==================================================>]   5.12kB/5.12kB
e23a6fbc3acf: Loading layer [==================================================>]  6.144kB/6.144kB
87a67eef40a6: Loading layer [==================================================>]  3.072kB/3.072kB
5439373f0cf5: Loading layer [==================================================>]  2.048kB/2.048kB
44c50cb14a57: Loading layer [==================================================>]   2.56kB/2.56kB
e343431b8ac0: Loading layer [==================================================>]   7.68kB/7.68kB
Loaded image: goharbor/harbor-db:v2.10.2
a7437080fdff: Loading layer [==================================================>]  17.16MB/17.16MB
89c54c70338a: Loading layer [==================================================>]  3.584kB/3.584kB
927d190fe457: Loading layer [==================================================>]   2.56kB/2.56kB
dab52f006605: Loading layer [==================================================>]  44.92MB/44.92MB
abc8dcfeeb98: Loading layer [==================================================>]  45.71MB/45.71MB
Loaded image: goharbor/harbor-jobservice:v2.10.2
9343d1011e8e: Loading layer [==================================================>]  21.63MB/21.63MB
d8aa785c45d8: Loading layer [==================================================>]  110.6MB/110.6MB
af30438adf19: Loading layer [==================================================>]  3.072kB/3.072kB
046baf104eef: Loading layer [==================================================>]   59.9kB/59.9kB
b4bf035573f1: Loading layer [==================================================>]  61.95kB/61.95kB
Loaded image: goharbor/redis-photon:v2.10.2
1a53aa673223: Loading layer [==================================================>]  14.15MB/14.15MB
e3ef818740f3: Loading layer [==================================================>]  4.096kB/4.096kB
f51244ac7c03: Loading layer [==================================================>]  3.072kB/3.072kB
971632584e63: Loading layer [==================================================>]   17.4MB/17.4MB
0cfb29c07835: Loading layer [==================================================>]  18.19MB/18.19MB
Loaded image: goharbor/registry-photon:v2.10.2
9fb8de59ccbd: Loading layer [==================================================>]  130.9MB/130.9MB
b0a99212add7: Loading layer [==================================================>]  3.584kB/3.584kB
c63a00cfdba3: Loading layer [==================================================>]  3.072kB/3.072kB
ea1dbece5b3a: Loading layer [==================================================>]   2.56kB/2.56kB
3c735fb3805e: Loading layer [==================================================>]  3.072kB/3.072kB
1b257c0b8709: Loading layer [==================================================>]  3.584kB/3.584kB
6bb174e7db78: Loading layer [==================================================>]  20.48kB/20.48kB
Loaded image: goharbor/harbor-log:v2.10.2
ea9d3f5fbb0c: Loading layer [==================================================>]  121.2MB/121.2MB
b88bdbd268ea: Loading layer [==================================================>]  6.532MB/6.532MB
a6a0154f827a: Loading layer [==================================================>]  246.8kB/246.8kB
664d5baa31ef: Loading layer [==================================================>]  1.477MB/1.477MB
Loaded image: goharbor/harbor-portal:v2.10.2
fe6dfc816265: Loading layer [==================================================>]  17.16MB/17.16MB
c8d1d3bbdf04: Loading layer [==================================================>]  3.584kB/3.584kB
a95b761bfdbe: Loading layer [==================================================>]   2.56kB/2.56kB
c3c092020a00: Loading layer [==================================================>]  58.96MB/58.96MB
75c8aba5c8aa: Loading layer [==================================================>]  5.632kB/5.632kB
84bdcacb7f37: Loading layer [==================================================>]  123.4kB/123.4kB
c80d23d5cead: Loading layer [==================================================>]  80.38kB/80.38kB
fb9a83422043: Loading layer [==================================================>]  59.95MB/59.95MB
17416c18f4d3: Loading layer [==================================================>]   2.56kB/2.56kB
Loaded image: goharbor/harbor-core:v2.10.2
6a65c62b44a3: Loading layer [==================================================>]  14.15MB/14.15MB
50d4a017d046: Loading layer [==================================================>]  4.096kB/4.096kB
b00285e03979: Loading layer [==================================================>]   17.4MB/17.4MB
bd20c4f45bc4: Loading layer [==================================================>]  3.072kB/3.072kB
cdef8cae2c49: Loading layer [==================================================>]  32.77MB/32.77MB
8c8e4274f70f: Loading layer [==================================================>]  50.95MB/50.95MB
Loaded image: goharbor/harbor-registryctl:v2.10.2
acbecb34a764: Loading layer [==================================================>]  17.16MB/17.16MB
478163dbc994: Loading layer [==================================================>]  27.56MB/27.56MB
4ec3465523a2: Loading layer [==================================================>]  4.608kB/4.608kB
07fb78bc4c52: Loading layer [==================================================>]  28.35MB/28.35MB
Loaded image: goharbor/harbor-exporter:v2.10.2
113051e862a0: Loading layer [==================================================>]  121.2MB/121.2MB
Loaded image: goharbor/nginx-photon:v2.10.2
2716f555462f: Loading layer [==================================================>]  14.67MB/14.67MB
d4471d1781eb: Loading layer [==================================================>]  4.096kB/4.096kB
2b9cfa166f1f: Loading layer [==================================================>]  3.072kB/3.072kB
4943bbb50494: Loading layer [==================================================>]  209.9MB/209.9MB
1f70ad7459fb: Loading layer [==================================================>]  17.45MB/17.45MB
c6de541f3b98: Loading layer [==================================================>]  228.1MB/228.1MB
Loaded image: goharbor/trivy-adapter-photon:v2.10.2
Loaded image: goharbor/prepare:v2.10.2[Step 3]: preparing environment ...[Step 4]: preparing harbor configs ...
prepare base dir is set to /root/harbor
Clearing the configuration file: /config/portal/nginx.conf
Clearing the configuration file: /config/log/logrotate.conf
Clearing the configuration file: /config/log/rsyslog_docker.conf
Clearing the configuration file: /config/nginx/nginx.conf
Clearing the configuration file: /config/core/env
Clearing the configuration file: /config/core/app.conf
Clearing the configuration file: /config/registry/passwd
Clearing the configuration file: /config/registry/config.yml
Clearing the configuration file: /config/registryctl/env
Clearing the configuration file: /config/registryctl/config.yml
Clearing the configuration file: /config/db/env
Clearing the configuration file: /config/jobservice/env
Clearing the configuration file: /config/jobservice/config.yml
Generated configuration file: /config/portal/nginx.conf
Generated configuration file: /config/log/logrotate.conf
Generated configuration file: /config/log/rsyslog_docker.conf
Generated configuration file: /config/nginx/nginx.conf
Generated configuration file: /config/core/env
Generated configuration file: /config/core/app.conf
Generated configuration file: /config/registry/config.yml
Generated configuration file: /config/registryctl/env
Generated configuration file: /config/registryctl/config.yml
Generated configuration file: /config/db/env
Generated configuration file: /config/jobservice/env
Generated configuration file: /config/jobservice/config.yml
loaded secret from file: /data/secret/keys/secretkey
Generated configuration file: /compose_location/docker-compose.yml
Clean up the input dirNote: stopping existing Harbor instance ...[Step 5]: starting Harbor ...
[+] Running 10/10✔ Network harbor_harbor        Created                                                                                                                                      0.1s ✔ Container harbor-log         Started                                                                                                                                      0.0s ✔ Container registry           Started                                                                                                                                      0.1s ✔ Container registryctl        Started                                                                                                                                      0.1s ✔ Container harbor-portal      Started                                                                                                                                      0.1s ✔ Container harbor-db          Started                                                                                                                                      0.1s ✔ Container redis              Started                                                                                                                                      0.1s ✔ Container harbor-core        Started                                                                                                                                      0.0s ✔ Container nginx              Started                                                                                                                                      0.0s ✔ Container harbor-jobservice  Started                                                                                                                                      0.0s 
✔ ----Harbor has been installed and started successfully.----

(17) 查看harbor相关容器

[root@master harbor]# docker ps | grep  goharbor

(18)docker-compose命令显示其管理的harbor容器

[root@master harbor]# docker-compose -f docker-compose.yml ps

(19)访问harbor

https://192.168.204.8:8443/

选高级

继续访问

弹出界面

(20)登录

账号:admin
密码:Harbor12345

成功进入系统

5. K8S 1.29版本 使用Harbor

(1) 创建私有项目

(2) 查看

目前项目为空

(3) 创建公开项目

(4)再次查看

目前项目为空

(5)Docker配置Harbor(所有节点)

1)修改
vim /etc/docker/daemon.json
……"insecure-registries": ["https://192.168.204.8:8443"]
……2)重新加载配置
systemctl daemon-reload3)重启服务
systemctl restart dockersystemctl restart cri-docker

修改前:

修改后:

这里以node1节点为例

[root@node1 ~]# systemctl status cri-docker

(6)docker 登录harbor并推送镜像到公开项目

node1节点

[root@node1 ~]# docker login 192.168.204.8:8443 -u admin -p Harbor12345

拉取镜像

打标签

[root@node1 ~]# docker tag alpine:latest 192.168.204.8:8443/devops02/alpine:20240502

推送镜像到公开项目

[root@node1 ~]# docker push 192.168.204.8:8443/devops02/alpine:20240502

查看

删除本地镜像

[root@node1 ~]# docker rmi -f 192.168.204.8:8443/devops02/alpine:20240502

拉取harbor仓库的镜像

[root@node1 ~]# docker pull 192.168.204.8:8443/devops02/alpine:20240502

(7)docker 登录harbor并推送镜像到私有项目

打标签

[root@node1 ~]# docker tag alpine:latest 192.168.204.8:8443/devops01/alpine:20240502

推送镜像到私有项目

[root@node1 ~]# docker push 192.168.204.8:8443/devops01/alpine:20240502

查看

删除本地镜像

[root@node1 ~]# docker rmi -f 192.168.204.8:8443/devops01/alpine:20240502

拉取harbor仓库的镜像

[root@node1 ~]# docker pull 192.168.204.8:8443/devops01/alpine:20240502

(8) 登出账号

[root@node1 ~]# docker logout 192.168.204.8

(9)其他方式的harbor部署

可以参考本人博客:

Docker容器与虚拟化技术:Harbor私有仓库部署与迁移-CSDN博客

云原生Kubernetes:K8S集群使用带凭证的harbor仓库-CSDN博客

二、问题

1.docker 登录harbor失败

(1)报错

Error response from daemon: Get "https://192.168.204.8:8443/v2/": tls: failed to verify certificate: x509: certificate relies on legacy Common Name field, use SANs instead

(2)原因分析

未重启docker。

(3)解决方法

重启docker:

[root@node1 ~]# systemctl restart docker

成功:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/5972.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文辅助笔记:TEMPO 之 dataset.py

0 导入库 import os import pandas as pd import torch from torch.utils.data import Dataset from .utils import StandardScaler, decompose from .features import time_features1 Dataset_ETT_hour 1.1 构造函数 class Dataset_ETT_hour(Dataset):def __init__(self,ro…

STM32中断系统详解

系列文章目录 STM32单片机系列专栏 C语言术语和结构总结专栏 文章目录 1. 中断基本概念 2. STM32中断 3. NVIC的基本组件 3.1 NVIC的基本组件 3.2 NVIC的优先级 4. EXTI外部中断 4.1 基本概念 4.2 基本结构 5. AFIO 1. 中断基本概念 中断(Interrupt&…

专注 APT 攻击与防御—工具介绍Veil-Evasion

专注 APT 攻击与防御 - Micro8 系列教程项目地址:https://github.com/Veil-Framework/Veil-Evasion 1、Veil-Evasion Veil-Evasion 是与 Metasploit 生成相兼容的 Payload 的一款辅助框架,并可以绕过大多数的杀软。 Veil-Evasion 并没有集成在kali&am…

Java零基础入门到精通_Day 9

1.ArrayList 编程的时候如果要存储多个数据,使用长度固定的数组存储格式,不一定满足我们的需求,更适应不了变化的需求,那么,此时该如何选择呢? 集 合 集合类的特点:提供一种存储空间可变的存储模型,存储的…

微调Mistral 7B以实现命名实体识别 (NER)

文章来源:fine-tuning-mistral-7b-for-named-entity-recognition-ner 2024 年 4 月 19 日 在自然语言处理(NLP)领域,命名实体识别(NER)被认为是一项关键任务,应用范围广泛,包括信息…

WPF基础应用

WPF参考原文 MVVM介绍 1.常用布局控件 1.1 布局控件 WPF(Windows Presentation Foundation)提供了多种布局容器来帮助开发者设计用户界面,以下是一些常用的布局: Grid: Grid是最常用的布局容器之一,它允许你通过定…

ArcGIS小技巧—基于点数据的密度分析(含练习数据)

关于空间点数据的密度分析,Arcgis Map中提供了基础的点密度分析和核密度分析。核密度分析可以通过手动设置搜索半径,调整密度分布的合理性。 但有时由于实际工作的需要,我们需要对研究范围做特定划分,比如根据格网规则划分做密度…

计算机毕业设计hadoop+spark+hive知识图谱音乐推荐系统 音乐数据分析可视化大屏 音乐爬虫 LSTM情感分析 大数据毕设 深度学习 机器学习

黄河科技学院本科毕业设计 任务书 工 学部 大数据与计算机应用 科教中心 计算机科学与技术 专业 2018 级普本1/专升本1班 学号 学生 指导教师 毕业设计题目 基于实时音乐数据挖掘的个性化推荐系统设计与优化 毕业设计工作内容与基本…

Arcgis 数据分类+批量制作

1、计算统计数据 2、更改符号系统–做分类 右击图层属性–符号系统–已分类–分类 改为手动—设置分类 完成

PHP 日期和时间 Date()函数 获取当前时间

目录 PHP Date() 函数获取日期获取当前时间下面是常用于时间的字符: PHP Date() 函数 PHP Date() 函数把时间戳格式化为更易读的日期和时间。 获取日期 date() 函数的格式参数是必需的,它们规定如何格式化日期或时间。 下面列出了一些常用于日期的字…

vscode 插件 code settings sync(配置云端同步)

vscode 插件 code settings sync(配置云端同步) 电脑A和B,vscode配置都在A电脑上,此时你想要将A电脑的vscode配置同步到B电脑的vscode中 第一步:A电脑和B电脑都需要在VSCode中安装下图插件 code settings sync 第二步&…

钉钉手机端调试前端H5项目流程

此流程以Vue项目为例 一、操作步骤 在根目录下 vue.config.js 文件中将 devServer.host 设置为 0.0.0.0 // vue.config.js module.exports {devServer: {host: 0.0.0.0,...},...}本地启动项目,获取 Network App running at:- Local: http://localhost:8080/ -…

吴恩达深度学习笔记:深度学习的 实践层面 (Practical aspects of Deep Learning)1.9-1.10

目录 第二门课: 改善深层神经网络:超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)第一周:深度学习的 实践层面 (Practical aspects of Deep Learning)1.9 归一…

msmpi 高性能并行计算 移植并行细胞自动机报错

报错情况如图 代码来源 元胞自动机生命游戏C语言并行实现 – OmegaXYZ 稍微修改,因为相对路径在 msmpi 10.1.1 中失效 Microsoft Windows [版本 10.0.22000.2538] (c) Microsoft Corporation。保留所有权利。C:\Users\ASUS>mpiexec -n 9 "C:\Users\ASUS\D…

MacBook Pro 原生安装 Ubuntu 24.04 ARM 版

趁着休假整理家里闲置的设备,看到了一台许久不用的 M2 芯片的 MacBook Pro,想着或许应该把它改造成 ARMv64 的 CI/CD 构建机,于是就有了这篇文章。 本篇文章适用于 M1、M2 全系列的设备,包括:MacBook Air、MacBook Pr…

JMeter性能压测脚本录制

第一步:电脑打开控制面板设置代理服务器 第二步:jmeter的测试计划添加一个HTTP(S)脚本记录器 在脚本记录器里配置好信息,然后保存为脚本文件(.*表示限定) 此方框内容为项目地址(可改…

单链表经典算法

一,移除链表元素 思路一 遍历数组,如果遇到链表中的元素等于val的节点就执行删除操作 typedef struct ListNode ListNode;struct ListNode* removeElements(struct ListNode* head, int val) {if(headNULL){return NULL;} ListNode*pnewhead(ListNode*)m…

大数据之数据仓库技术:ETL工具和Kettle简介

大数据之数据仓库技术:ETL工具和Kettle简介 ETL简介ETL工具和KettleKettle家族 Kettle资源KettlePack 任务调度工具 ETL简介 ETL(Extract-Transform-Load): 在大数据技术领域内,用来描述将数据从 来源端 经过 抽取(extract), 转换(transform), 加载(loa…

数据结构与算法——栈和队列

栈和队列 //1.栈 #include <stdio.h> #include <stdlib.h>// 定义栈的结构体 typedef struct Stack {int capacity; // 栈的容量int top; // 栈顶指针&#xff0c;表示当前栈顶元素的位置int* array; // 存储栈元素的数组 } Stack;// 创建一个新的栈 Stack…

【Vue】结合ElementUI实现简单数据请求和页面跳转功能

一、准备工作 1、创建一个Vue-cli程序 之前的博客有。各位看官姥爷&#xff0c;可以自查。 2、安装ElementUI 在创建Vue-cli程序的过程中&#xff0c;需要在控制台执行以下指令&#xff1a; #安装 element-ui npm i element-ui -S #安装 SASS 加载器 cnpm install sass-loa…