三言老师
2026-08-16 22:33:49点赞:0阅读:0
关注
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 证书认证
|
二、项目整体需求(你全部的需求汇总)
- 全程系统统一:全部 Rocky Linux 8.6,不再使用 9 系列
- Harbor 必须 HTTPS 证书认证,禁止 HTTP 明文、禁止不安全裸连
- 自签证书必须带 IP SAN,杜绝 x509 证书不匹配报错
- Harbor 新建 私有项目 k8s-offline,必须账号密码+证书双重验证才能拉取镜像
- K8s 集群完全离线部署,初始化不从外网拉镜像,全部从内网 Harbor 192.168.1.200 拉取
- 所有 K8s 核心组件镜像(apiserver/etcd/coredns/pause 等)统一内网托管
- K8s 业务 Pod 私有镜像使用 imagePullSecret 鉴权
- 所有机器信任 Harbor 根证书,生产级安全架构
三、统一密码与规范约定
第一部分: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 [email protected]:/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 \
[email protected]
|
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,企业生产标准架构
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/qq_27665533/article/details/163701614