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

Kubernetes中使用Helm部署Artifactory时容器初始化失败

解决Artifactory OSS Helm部署卡在初始化的问题

看起来你的Artifactory部署卡在初始化阶段,核心问题集中在PostgreSQL初始化失败、NFS存储卷权限不匹配,进而连锁导致Artifactory初始化容器无法完成、Nginx探针超时。下面是一步步的排查和解决方法:

1. 先搞定PostgreSQL的Init CrashLoopBackOff

从事件日志里能看到Back-off restarting failed container,对应的是PostgreSQL的init-chmod-data初始化容器——这个容器的作用是给数据目录设置正确的权限,失败大概率是NFS挂载的目录权限和容器运行用户不匹配。

  • 先查看初始化容器的具体报错:

    kubectl logs artifactory-oss-postgresql-0 -c init-chmod-data
    

    你应该会看到类似"无法修改目录权限"的提示。

  • 解决方法:
    因为你用的是managed-nfs-storage,NFS服务器上的目录默认权限可能和PostgreSQL容器的运行用户(Bitnami镜像默认是UID 1001)不匹配:

    1. 登录你的NFS服务器,找到对应PostgreSQL的PV目录(比如事件里的/persistentvolumes/default-data-artifactory-oss-postgresql-0-pvc-xxx),修改权限:
      chown -R 1001:1001 /path/to/your/nfs/postgresql/directory
      chmod -R 775 /path/to/your/nfs/postgresql/directory
      
    2. 或者在Helm的values.yaml里配置PostgreSQL的安全上下文,强制容器用匹配的UID/GID运行:
      postgresql:
        securityContext:
          enabled: true
          runAsUser: 1001
          fsGroup: 1001
      
      然后升级你的Helm Release:
      helm upgrade artifactory-oss jfrog/artifactory-oss -f values.yaml
      

2. 处理存储卷删除失败的权限问题

事件里的VolumeFailedDelete报错(remove ... join.key: permission denied),是因为Artifactory容器创建的文件权限为特定用户,NFS服务器删除时没有权限。

  • 解决步骤:
    1. 先删除对应的Pod,避免数据冲突:
      kubectl delete pod artifactory-oss-artifactory-0 artifactory-oss-postgresql-0
      
    2. 登录NFS服务器,手动删除报错的PV目录:
      rm -rf /persistentvolumes/default-artifactory-volume-artifactory-oss-artifactory-0-pvc-xxx
      
    3. 后续部署时,给Artifactory配置安全上下文,让容器运行用户拥有NFS目录的权限:
      artifactory:
        securityContext:
          enabled: true
          runAsUser: 1035  # Artifactory默认运行用户的UID是1035
          fsGroup: 1035
      
      这样容器创建的文件权限会和NFS目录匹配,后续删除PV时就不会再出现权限问题。

3. 让Artifactory初始化容器继续执行

Artifactory的wait-for-db初始化容器一直在等待PostgreSQL就绪,只要PostgreSQL正常启动,这个容器会自动完成,Artifactory主容器就能启动了。

  • 验证PostgreSQL是否就绪:
    kubectl exec artifactory-oss-postgresql-0 -- psql -U postgres -c "SELECT 1"
    
    如果返回1,说明PostgreSQL运行正常,Artifactory的初始化流程会很快走完。

4. 修复Nginx的探针超时问题

Nginx的Readiness/Liveness探针失败是因为Artifactory主服务还没起来,等Artifactory启动完成后,探针会自动恢复。如果后续还是有超时问题,可以调整探针的参数:
在values.yaml里修改:

artifactory:
  nginx:
    readinessProbe:
      timeoutSeconds: 30
      periodSeconds: 10
    livenessProbe:
      timeoutSeconds: 30
      periodSeconds: 10

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 20:19:08