主题
01 环境与准备工作
1.1 环境信息
| 项目 | 信息 |
|---|---|
| K8s 集群 | RKE2 v1.35.6+rke2r1,API: https://192.168.122.31:6443 |
| 节点 | sza122023/24/28/29/30 Ready(23/24/31 为 control-plane,31 当前 NotReady),Rocky Linux 9.8 |
| 容器运行时 | containerd 2.2.5(节点已配置 Harbor HTTP 仓库信任) |
| 存储 | StorageClass nfs(默认,nfs-subdir-external-provisioner,支持 RWX) |
| Ingress | Traefik(本次未使用,采用 NodePort 暴露) |
| Harbor | http://192.168.122.156:30000(HTTP,admin / xxx) |
| kubeconfig | ~/.kube/config-122.31 |
说明:集群节点已可正常拉取
192.168.122.156:30000的 HTTP 镜像(集群中已有 116 个容器使用该仓库),无需额外配置 containerd。
1.2 安装 kubectl(本机无 kubectl)
官方源 dl.k8s.io 可直连;阿里云镜像路径已失效(mirrors.aliyun.com/kubernetes-release 404)。
bash
mkdir -p tools
curl -sL -o tools/kubectl "https://dl.k8s.io/release/v1.29.3/bin/linux/amd64/kubectl"
chmod +x tools/kubectl
tools/kubectl version --client提示:kubectl 1.29 与集群 1.35 存在版本偏差告警,仅影响新特性,常用命令正常。 生产建议下载与集群一致的版本:
https://dl.k8s.io/release/v1.35.x/bin/linux/amd64/kubectl
验证集群连通性:
bash
export KUBECONFIG=~/.kube/config-122.31
tools/kubectl get nodes -o wide
tools/kubectl get sc # 确认默认 StorageClass: nfs
tools/kubectl get ns本机已具备的工具:docker、helm v3.19.4、skopeo、sshpass、jq。
1.3 验证 Harbor 连通性与创建项目
bash
# 验证 Harbor API(401 表示服务正常、需认证)
curl -s -o /dev/null -w "%{http_code}\n" http://192.168.122.156:30000/v2/
# 创建项目(jenkins 项目已存在返回 409,sonarqube 新建成功 201)
curl -s -X POST -u 'admin:xxx' -H 'Content-Type: application/json' \
http://192.168.122.156:30000/api/v2.0/projects \
-d '{"project_name":"jenkins","public":true}'
curl -s -X POST -u 'admin:xxx' -H 'Content-Type: application/json' \
http://192.168.122.156:30000/api/v2.0/projects \
-d '{"project_name":"sonarqube","public":true}'
# 查看项目
curl -s -u 'admin:xxx' http://192.168.122.156:30000/api/v2.0/projects | jq -r '.[].name'1.4 国内镜像源可用性测试
使用 skopeo 探测各国内 Docker Hub 加速源:
bash
for m in docker.m.daocloud.io docker.1ms.run docker.xuanyuan.me hub.rat.dev; do
echo "== $m =="
timeout 25 skopeo inspect --tls-verify=false docker://$m/library/nginx:latest >/dev/null 2>&1 && echo OK || echo FAIL
done实测结果(2026-08-13):
| 镜像源 | 状态 |
|---|---|
| docker.m.daocloud.io | ✅ 可用(本次选用) |
| docker.1ms.run | ✅ 可用(备用) |
| docker.xuanyuan.me | ❌ 不可用 |
| hub.rat.dev | ❌ 不可用 |
1.5 Helm Chart 获取(charts.jenkins.io 国内不可直连)
charts.jenkins.io(GitHub Pages)本机不可直连,通过 GitHub 加速代理下载:
bash
mkdir -p charts
# 获取 chart 索引,确认最新版本
curl -sL "https://ghfast.top/https://raw.githubusercontent.com/jenkinsci/helm-charts/gh-pages/index.yaml" \
-o charts/jenkins-index.yaml
# 下载 chart 5.9.54(appVersion 2.568.2)
curl -sL "https://ghfast.top/https://github.com/jenkinsci/helm-charts/releases/download/jenkins-5.9.54/jenkins-5.9.54.tgz" \
-o charts/jenkins-5.9.54.tgz
tar xzf charts/jenkins-5.9.54.tgz -C charts/实测可用的 GitHub 代理:ghfast.top、gh-proxy.com、ghproxy.net。