Skip to content

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.yaml

7.2 备份与恢复

Jenkins 全部状态 = JENKINS_HOME(NFS PVC jenkins)+ JCasC(Git/values.yaml)。 建议:

  1. 配置备份deploy/jenkins/values.yaml 纳入版本管理(本目录即完整副本)。
  2. 数据备份:NFS 服务端备份 jenkins 目录,或使用 velero 备份 PVC。
  3. 恢复:重新执行 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.sql

7.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 401sonar-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 locationlocation 必须放 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 性能优化(可选)

  1. 共享依赖缓存:为 maven/npm/go 构建挂 RWX PVC 做依赖缓存(当前 java-demo 每次全量下载)
  2. Agent 镜像预热:DaemonSet 预拉 agent 镜像到各节点,消除冷启动(1-2 分钟 → 秒级)
  3. JENKINS_HOME 换高性能存储:NFS 小文件 IO 是最大瓶颈,local-path/Longhorn/Ceph 可提速数倍
  4. 提高并发agent.containerCap(默认 10)按需上调;pod 模板设 idleMinutes 复用 agent
  5. 构建历史裁剪:job 配 buildDiscarder(logRotator(numToKeepStr: '20'))
  6. 监控:装 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)