主题
07 运维手册
7.1 日常运维
bash
export KUBECONFIG=~/.kube/config-122.31
K=./tools/kubectl
# 查看状态
$K -n jenkins get pods,pvc,svc
$K -n sonarqube get pods,pvc,svc
# 查看 Jenkins 日志
$K -n jenkins logs jenkins-0 -c jenkins --tail=100 -f
# 查看 JCasC 热加载日志
$K -n jenkins logs jenkins-0 -c config-autoreload --tail=50
# 重启 Jenkins(配置/secret 变更后)
$K -n jenkins rollout restart statefulset jenkins
# 升级配置(JCasC/插件/镜像)
helm upgrade jenkins ./charts/jenkins -n jenkins -f deploy/jenkins/values.yaml7.2 备份与恢复
Jenkins 全部状态 = JENKINS_HOME(NFS PVC jenkins)+ JCasC(Git/values.yaml)。 建议:
- 配置备份:
deploy/jenkins/values.yaml纳入版本管理(本目录即完整副本)。 - 数据备份:NFS 服务端备份 jenkins 目录,或使用 velero 备份 PVC。
- 恢复:重新执行
helm install+ 恢复 JENKINS_HOME 数据即可。
SonarQube:备份 PostgreSQL(pg_dump)+ PVC sonarqube-data。
bash
# 备份 sonar 数据库示例
$K -n sonarqube exec deploy/postgres -- pg_dump -U sonar sonar > sonar-backup.sql7.3 故障排查
| 现象 | 排查 |
|---|---|
| Pod ImagePullBackOff | 镜像未同步完成;$K describe pod 看镜像名;核对 02 文档清单 |
| Jenkins 启动慢 | init 容器在下载插件(updates.jenkins.io),logs jenkins-0 -c init;不可达时配置 JENKINS_UC 国内镜像 |
| Agent Pod 无法创建 | 检查 $K -n jenkins get events;确认 SA/RBAC(chart 自动创建) |
| Agent jnlp 连接失败 | 检查 jenkins-agent Service(50000)与 cloud 配置中的 jenkinsTunnel |
| JCasC 未生效 | 看 config-autoreload sidecar 日志;检查 values yaml 语法;必要时重启 controller |
| SonarQube 一直不 Ready | 确认 init-sysctl 已执行;logs -c sonarqube 看 ES 报错;内存需 >= 2Gi |
| sonar:sonar 401 | sonar-token 未更新(见 04 文档 4.4 节),更新 secret 后重启 controller |
| waitForQualityGate 卡住/超时 ABORTED | 配置 SonarQube webhook:POST /api/webhooks/create?name=jenkins&url=http://jenkins.jenkins.svc.cluster.local:8080/sonarqube-webhook/(已配置) |
JCasC 报 UnknownConfigurator location | location 必须放 unclassified: 下,且与 chart 默认配置冲突时会报 ConfiguratorConflictException——用 controller.jenkinsUrl 设置 |
| JCasC 报 envVars 配置失败 | kubernetes 插件容器环境变量语法为 - envVar: {key, value} |
| Jenkins 启动即退出 exit 5 | 查看日志中 Failed ConfigurationAsCode.init 的 YAML 行号;多为 configScripts 缩进问题 |
| 公网 502 | 依次检查:宿主机 journalctl -u frpc、公网机 ss -tlnp | grep 19010(frps)、ss -tlnp | grep 9010(traefik)、Jenkins Pod 状态 |
| 节点拉 Harbor 镜像 HTTPS 报错 | 见 02 文档 2.5 节(registries.yaml + hosts.toml 修复,脚本 scripts/fix-node-registry.sh) |
7.4 性能优化(可选)
- 共享依赖缓存:为 maven/npm/go 构建挂 RWX PVC 做依赖缓存(当前 java-demo 每次全量下载)
- Agent 镜像预热:DaemonSet 预拉 agent 镜像到各节点,消除冷启动(1-2 分钟 → 秒级)
- JENKINS_HOME 换高性能存储:NFS 小文件 IO 是最大瓶颈,local-path/Longhorn/Ceph 可提速数倍
- 提高并发:
agent.containerCap(默认 10)按需上调;pod 模板设idleMinutes复用 agent - 构建历史裁剪:job 配
buildDiscarder(logRotator(numToKeepStr: '20')) - 监控:装 metrics 插件接入集群已有 Prometheus(cattle-monitoring-system)
7.5 卸载
bash
helm uninstall jenkins -n jenkins
$K delete namespace sonarqube
$K delete namespace jenkins # PVC 随命名空间删除(nfs provisioner reclaim: Delete)