新闻详情

新闻详情

首页 / 资讯中心 / 详情

k8s下,Harbor 私有镜像仓库部署

发布时间:2026/11/15 15:22:10来源:尧图网络
k8s下,Harbor 私有镜像仓库部署
环境信息表格服务器IP角色node‑0110.10.6.27k8s 节点 HAProxyKeepalivednode‑0210.10.6.28k8s 节点 HAProxyKeepalivednode‑0310.10.6.29k8s 节点 HAProxyKeepalivedVIP10.10.6.100Keepalived 虚拟 IP前端负载均衡入口集群版本K8s v1.28.15Helmv3.14.0Ingress‑Nginx‑Controller v1.13.5Harbor‑v2.15.2 网络架构HAProxy 四层 TCP 透传SSL 证书终止于 k8s 内部 ingress‑nginx不在 haproxy 做 ssl 解密访问域名harbor.devops.local前置条件kubernetes 集群正常运行calico 网络就绪ingress‑nginx‑controller 已经部署完成使用 NodePort 模式https 端口为 30443kubectl get ingressclass #确认 ingressclass名称为 nginx三台服务器 HAProxyKeepalived 高可用已经部署VIP10.10.6.100helm 环境可用可访问外网 helm 仓库一、Helm 部署 Harbor1. 添加 harbor helm 仓库helm repo add harbor https://helm.goharbor.io helm repo update2. 离线下载 chart可选内网环境建议cd /opt helm pull harbor/harbor --untar cd harbor3. 编写 harbor 自定义 values 配置 my‑harbor‑values.yaml注意此处 ingress 默认没有填写 ingressClassName部署完成之后需要手动修补这是本次实施遇到的坑expose: type: ingress tls: enabled: true certSource: auto ingress: hosts: core: harbor.devops.local annotations: nginx.ingress.kubernetes.io/proxy-body-size: 0 nginx.ingress.kubernetes.io/ssl-redirect: true externalURL: https://harbor.devops.local harborAdminPassword: Harbor123456 persistence: persistentVolumeClaim: registry: storageClass: size: 20Gi chartmuseum: storageClass: jobservice: storageClass: database: storageClass: redis: storageClass: trivy: storageClass: 4. helm 执行安装helm upgrade --install harbor . \ -n harbor \ --create-namespace \ -f my-harbor-values.yaml5. 部署后检查 pod 状态kubectl get pods -n harbor -w等待所有 pod 状态变为 Runningjobservice 允许前期 1‑3 次重启稳定后不再重启属于正常。6. 修复 Ingress 资源重要helm chart 默认缺失 ingressClassName 字段问题现象Ingress 资源 CLASS 列为noneingress‑nginx 控制器直接忽略该 ingress 规则不会同步配置。 执行 patch 命令修复 ingress 资源kubectl patch ingress harbor-ingress -n harbor -p {spec:{ingressClassName:nginx}}修复完成之后查看 ingresskubectl get ingress -n harbor此时 CLASS 列变为nginx⚠️该 Ingress 的 ADDRESS 字段为空属于正常现象因为 ingress‑nginx 使用 NodePort 模式非 LoadBalancer Service。二、三台 HAProxy 配置修改三台机器都必须修改配置保持完全一致编辑/etc/haproxy/haproxy.cfg在配置文件末尾追加下面 listen 片段重点mode tcp 四层透传bind 监听0.0.0.0:443禁止直接绑定 VIP 地址 10.10.6.100否则 keepalived 漂移之后备节点 haproxy 启动失败listen k8s-ingress-https bind 0.0.0.0:443 mode tcp balance roundrobin server k8s-node1 10.10.6.27:30443 check inter 3000 fall 2 rise 2 server k8s-node2 10.10.6.28:30443 check inter 3000 fall 2 rise 2 server k8s-node3 10.10.6.29:30443 check inter 3000 fall 2 rise 2说明k8s‑node1/k8s‑node2仅为 haproxy 内部后端别名无需和服务器主机名保持一致仅用于 stats 监控页面展示实际生效的是后面的 IPNodePort 端口。每台 haproxy 修改之后校验配置并热重载#校验语法 haproxy -c -f /etc/haproxy/haproxy.cfg #热加载配置不需要重启服务 systemctl reload haproxy防火墙放行 443 端口三台 haproxy 节点firewall-cmd --add-port443/tcp --permanent firewall-cmd --reload验证 haproxy 监听端口ss -lnp | grep 443 #确认haproxy进程监听 *:443三、集群节点 hosts 解析 harbor 健康验证1、k8s 节点 hosts 写入域名解析node‑01/node‑02/node‑03echo 10.10.6.100 harbor.devops.local /etc/hosts2、健康接口测试验证整套链路curl -k https://harbor.devops.local/api/v2.0/health预期返回 json 结果status:healthy所有组件状态 healthy 即为 harbor 后端 前端 haproxy 链路全部正常。四、所有 K8s 业务节点 containerd 配置镜像推送必须配置自签证书跳过校验修改/etc/containerd/config.toml添加 harbor 仓库跳过 tls 校验配置[plugins.io.containerd.grpc.v1.cri.registry.configs.harbor.devops.local.tls] insecure_skip_verify true修改之后重启 containerd 服务systemctl restart containerd测试 nerdctl 登录 harbor 仓库nerdctl login harbor.devops.local五、PC 客户端访问准备windows 电脑修改 hosts 文件 (C:\Windows\System32\drivers\etc\hosts)增加解析10.10.6.100 harbor.devops.local浏览器访问https://harbor.devops.local当前使用 ingress‑nginx 默认内置自签证书浏览器提示不安全告警属于现状生产环境建议申请内网域名证书创建 tls secret 绑定到 harbor‑ingress 消除告警获取 harbor 管理员密码如果部署时没有写死密码可从 secret 读取kubectl get secret harbor -n harbor -o jsonpath{.data.harborAdminPassword} |base64 -d;echo默认管理员账号admin六、完整流量路径PC客户端浏览器 ↓ Keepalived‑VIP 10.10.6.100:443 (HAProxy mode tcp四层透传不解密SSL) ↓轮询后端k8s节点NodePort k8s节点IP:30443 ↓ ingress‑nginx‑controller Pod终止HTTPS SSL证书 ↓匹配ingress‑nginx规则 harbor‑ingress harbor‑portal / harbor‑core (ClusterIP Service →业务Pod)七、后续运维说明harbor 后续 helm 升级时如果 values.yaml 没有指定 ingressClassName升级后会再次丢失该字段需要重新 patch建议直接把 ingressClassName 写进 my‑harbor‑values.yamlhaproxy 三台配置务必保持完全一致保证 keepalived 故障漂移之后业务不间断harbor 的数据持久化存储需要定期做好 PV 数据备份。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/15 4:54:16

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/15 2:04:12

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/14 10:11:15

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/14 17:14:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/14 16:35:50

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/15 4:06:36

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉