You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab Webservice与Sidekiq无法启动问题求助

解决方案

1. 修复Redis StatefulSet缺失问题

升级前手动删除了gitlab-redis-master StatefulSet,回滚Chart时Helm不会自动重建已删除的资源,这是核心问题之一:

# 检查Redis相关资源状态
kubectl get statefulset,pod,service -n gitlab | grep redis

# 用旧版本Chart模板重建Redis StatefulSet
helm template gitlab gitlab/gitlab -n gitlab --version 6.11.13 --values gitlab-values.yaml --include-crds=false \
  | grep -A 60 -B 5 "kind: StatefulSet" | grep -A 60 -B 5 "gitlab-redis-master" \
  | kubectl apply -n gitlab -f -

等待Redis Pod启动并进入Running状态后,再检查连接。

2. 验证Pod间DNS与网络连通性

测试DNS解析

# 测试Redis服务DNS解析
kubectl run -n gitlab --rm -it --image busybox:1.36 dns-test -- nslookup gitlab-redis-master.gitlab.svc
# 测试PostgreSQL服务DNS解析
kubectl run -n gitlab --rm -it --image busybox:1.36 dns-test -- nslookup gitlab-postgresql.gitlab.svc

如果解析失败,检查K8s集群CoreDNS状态并重启:

kubectl rollout restart deployment coredns -n kube-system

测试端口连通性

进入卡住的Init容器,直接测试Redis和PostgreSQL端口:

# 替换xxx为实际的sidekiq/webservice Pod名称
kubectl exec -n gitlab -c dependencies gitlab-sidekiq-all-in-1-v2-xxx -- telnet gitlab-redis-master.gitlab.svc 6379
kubectl exec -n gitlab -c dependencies gitlab-sidekiq-all-in-1-v2-xxx -- telnet 10.106.237.84 5432

如果连通失败,检查是否有NetworkPolicy阻止Pod间通信:

kubectl get networkpolicy -n gitlab
# 临时删除所有NetworkPolicy测试
kubectl delete networkpolicy -n gitlab --all

3. 清理残留配置与强制重建Pod

清理配置缓存PVC

回滚后可能残留了升级时的配置文件,删除webservice/sidekiq的PVC(注意:如果PVC有重要数据请先备份):

kubectl delete pvc -n gitlab -l app=webservice
kubectl delete pvc -n gitlab -l app=sidekiq

强制重新部署GitLab

用--force和--recreate-pods参数触发全量重建:

helm upgrade gitlab gitlab/gitlab -n gitlab --version 6.11.13 --values gitlab-values.yaml --force --recreate-pods

4. 排查SMTP配置卡壳问题

如果卡在Copying smtp_settings.rb into /srv/gitlab/config,检查文件权限与模板渲染:

# 进入Init容器检查模板文件与目标目录权限
kubectl exec -n gitlab -c dependencies gitlab-sidekiq-all-in-1-v2-xxx -- ls -l /var/opt/gitlab/templates/smtp_settings.rb
kubectl exec -n gitlab -c dependencies gitlab-sidekiq-all-in-1-v2-xxx -- ls -ld /srv/gitlab/config/

如果权限不足,在gitlab-values.yaml中添加/调整securityContext配置:

global:
  securityContext:
    runAsUser: 1000
    runAsGroup: 1000
    fsGroup: 1000

然后重新执行helm升级。


内容的提问来源于stack exchange,提问作者Farad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 16:12:52