K8s v1.32.13 + Harbor HTTPS 私有仓库 完整部署文档

Rocky Linux 8.6 K8s v1.32.13 + Harbor HTTPS 私有仓库 完整部署文档(最终定稿)

一、全新环境规划(最终确认版)

两台机器全部为 Rocky Linux 8.6

|------------------|---------------|-----------------|-------------------------|
| 角色 | IP 地址 | 系统版本 | 核心服务 |
| Kubernetes 单节点集群 | 192.168.1.99 | Rocky Linux 8.6 | K8s v1.32.13 |
| Harbor 私有镜像仓库 | 192.168.1.200 | Rocky Linux 8.6 | Harbor 离线版 + HTTPS 证书认证 |

二、项目整体需求(你全部的需求汇总)

  1. 全程系统统一:全部 Rocky Linux 8.6,不再使用 9 系列
  1. Harbor 必须 HTTPS 证书认证,禁止 HTTP 明文、禁止不安全裸连
  1. 自签证书必须带 IP SAN,杜绝 x509 证书不匹配报错
  1. Harbor 新建 私有项目 k8s-offline,必须账号密码+证书双重验证才能拉取镜像
  1. K8s 集群完全离线部署,初始化不从外网拉镜像,全部从内网 Harbor 192.168.1.200 拉取
  1. 所有 K8s 核心组件镜像(apiserver/etcd/coredns/pause 等)统一内网托管
  1. K8s 业务 Pod 私有镜像使用 imagePullSecret 鉴权
  1. 所有机器信任 Harbor 根证书,生产级安全架构

三、统一密码与规范约定

  • Harbor 管理员账号:admin
  • Harbor 密码:Harbor@123456
  • 证书有效期:10 年
  • 镜像项目名:k8s-offline(私有)
  • K8s 版本:v1.32.13

第一部分:Harbor 服务端部署(192.168.1.200)

1. 生成带 IP-SAN 自签 TLS 证书(适配 192.168.1.200)

Rocky8.6 专用,解决证书不匹配问题

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| bash mkdir -p /opt/harbor/cert cd /opt/harbor/cert cat > openssl.cnf <<EOF req distinguished_name = req_distinguished_name x509_extensions = v3_ext prompt = no req_distinguished_name CN = 192.168.1.200 v3_ext basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names alt_names IP.1 = 192.168.1.200 EOF openssl req -x509 -nodes -days 3650 -newkey rsa:4096 \ -keyout harbor.key -out harbor.crt \ -config openssl.cnf |

2. Harbor 核心配置 harbor.yml

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| yaml hostname: 192.168.1.200 harbor_admin_password: Harbor@123456 http: port: 80 https: port: 443 certificate: /opt/harbor/cert/harbor.crt private_key: /opt/harbor/cert/harbor.key |

3. 启动 Harbor

|---------------------------------------------------------|
| bash ./prepare docker compose down docker compose up -d |

4. 放行防火墙 443 端口

|------------------------------------------------------------------------|
| bash firewall-cmd --add-port=443/tcp --permanent firewall-cmd --reload |

5. 网页初始化

访问:https://192.168.1.200

登录后新建项目:k8s-offline(私有)

第二部分:K8s 节点证书信任配置(192.168.1.99)

Rocky8.6 必须执行,全程禁用 insecure 不安全模式

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| bash mkdir -p /etc/docker/certs.d/192.168.1.200 scp root@192.168.1.200:/opt/harbor/cert/harbor.crt /etc/docker/certs.d/192.168.1.200/ca.crt systemctl daemon-reload systemctl restart docker |

测试 HTTPS 登录

|-----------------------------------------|
| bash docker login https://192.168.1.200 |

第三部分:K8s 镜像批量推送至内网 Harbor

1. 批量打 Tag(适配新 IP 192.168.1.200)

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| bash docker tag registry.k8s.io/kube-apiserver:v1.32.13 192.168.1.200/k8s-offline/kube-apiserver:v1.32.13 docker tag registry.k8s.io/kube-controller-manager:v1.32.13 192.168.1.200/k8s-offline/kube-controller-manager:v1.32.13 docker tag registry.k8s.io/kube-scheduler:v1.32.13 192.168.1.200/k8s-offline/kube-scheduler:v1.32.13 docker tag registry.k8s.io/kube-proxy:v1.32.13 192.168.1.200/k8s-offline/kube-proxy:v1.32.13 docker tag registry.k8s.io/coredns/coredns:v1.11.3 192.168.1.200/k8s-offline/coredns:v1.11.3 docker tag registry.k8s.io/pause:3.10 192.168.1.200/k8s-offline/pause:3.10 docker tag registry.k8s.io/etcd:3.5.16-0 192.168.1.200/k8s-offline/etcd:3.5.16-0 |

2. 批量推送镜像

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| bash docker push 192.168.1.200/k8s-offline/kube-apiserver:v1.32.13 docker push 192.168.1.200/k8s-offline/kube-controller-manager:v1.32.13 docker push 192.168.1.200/k8s-offline/kube-scheduler:v1.32.13 docker push 192.168.1.200/k8s-offline/kube-proxy:v1.32.13 docker push 192.168.1.200/k8s-offline/coredns:v1.11.3 docker push 192.168.1.200/k8s-offline/pause:3.10 docker push 192.168.1.200/k8s-offline/etcd:3.5.16-0 |

第四部分:K8s 192.168.1.99 离线初始化集群

完全不走外网,纯内网 Harbor 拉取组件镜像

|--------------------------------------------------------------------------------------------------------------------------------------------------|
| bash kubeadm init \ --kubernetes-version=v1.32.13 \ --apiserver-advertise-address=192.168.1.99 \ --image-repository=192.168.1.200/k8s-offline |

第五部分:私有镜像授权(业务 Pod 使用)

1. 创建 Harbor 镜像拉取密钥

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| bash kubectl create secret docker-registry harbor-auth \ --docker-server=https://192.168.1.200 \ --docker-username=admin \ --docker-password=Harbor@123456 \ --docker-email=admin@test.com |

2. Pod/YAML 引用方式

|--------------------------------------------------------------------------------------------------------------------------|
| yaml spec: containers: - name: demo image: 192.168.1.200/k8s-offline/etcd:3.5.16-0 imagePullSecrets: - name: harbor-auth |

第六部分:核心硬性规范(Rocky8.6 专属)

  • 系统:全部 Rocky Linux 8.6,统一内核、统一依赖、零兼容问题
  • 网络:全程 HTTPS 证书加密,无 http 明文、无 insecure 漏洞配置
  • 证书:强制 IP-SAN,彻底解决内网镜像仓库证书报错
  • 架构:离线 K8s + 内网私有 Harbor,企业生产标准架构
  • 鉴权:TLS证书 + 账号密码 双重认证
相关推荐
上海广测检测科技有限公司10 分钟前
消费类智能联网设备安全分级国标征求意见要点解析:三级五维框架与跨境对标逻辑
网络·经验分享
别动我齐刘海10 分钟前
Linux 系统调试学习1
linux·运维·服务器·c++·学习·机器学习·机器人
Lsetea23 分钟前
OpenSSL报certificate chain too long:error 22与verify_depth深度排查
linux·https·ssl证书·openssl·证书链
QZ166560951591 小时前
金融数据流转监测排行:从看见到拦截的距离
网络·安全·网络安全·金融
不像程序员的程序媛1 小时前
linux常见文本操作命令
linux·运维·服务器
wangbing11252 小时前
开发指南149-IotDB-常用命令
linux·运维·iotdb
Dovis(誓平步青云)2 小时前
常用命令藏得太深?怎么做一个快捷命令坞
运维·前端·自动化·音视频·prometheus
看着博客敲代码2 小时前
WorkBuddy 接上 Kali MCP 做自动化渗透:信息收集到初步验证的落地记录
linux·人工智能·安全·网络安全·自动化
志栋智能2 小时前
运维超自动化的知识管理与传承
运维·自动化
蜗牛互联网3 小时前
Python Agent工具调用的白名单、参数校验与审批门禁
java·服务器·前端·人工智能·后端·python