AKS环境下Jira无法扩容问题求助
问题分析
在AKS上通过Atlassian Helm Chart部署Jira Data Center,使用Azure文件共享作为持久化卷时,单Pod运行正常,但扩容多Pod后出现cache.lock文件找不到的错误,手动删除该文件也失败。核心问题在于Jira的localHome被错误配置为共享存储,且SMB挂载选项与Felix缓存锁机制不兼容。
解决方案
1. 修正localHome存储配置
Jira Data Center要求localHome是每个Pod独有的本地存储,绝对不能使用共享存储(如Azure文件共享)。需将localHome改为使用Azure Disk(ReadWriteOnce访问模式):
- 创建对应localHome的PVC,使用Azure默认的磁盘存储类:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: local-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 50Gi storageClassName: default - 确保values.yaml中localHome的PVC指向上述RWO类型的PVC,而非共享存储的PVC。
2. 禁用sharedHome的nfsPermissionFixer
Azure文件共享基于SMB协议,而非NFS,因此nfsPermissionFixer配置完全无效,需直接禁用:
volumes: sharedHome: customVolume: persistentVolumeClaim: claimName: shared-pvc nfsPermissionFixer: enabled: false # 改为false
3. 调整Azure文件共享挂载选项
移除nobrl选项(该选项禁用字节范围锁,Felix缓存依赖文件锁维护cache.lock),同时将缓存模式改为none避免多Pod间缓存不一致:
mountOptions: - dir_mode=0777 - file_mode=0777 - uid=2001 - gid=2001 - mfsymlinks - cache=none # 替换原cache=strict - nosharesock # 移除nobrl选项
4. 验证sharedHome的访问模式
确保sharedHome的PVC使用ReadWriteMany访问模式(Azure文件共享原生支持RWX):
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: shared-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 100Gi storageClassName: azurefile
5. 清理旧缓存并重启
- 删除所有Jira Pod,让Kubernetes重新创建全新的Pod实例:
kubectl delete pods -l app=jira - 待Pod重启完成后,验证多Pod状态,确认每个Pod的localHome路径下独立存在
cache.lock文件,无共享冲突。
关键说明
- Jira的localHome存储必须是Pod独占的,用于存放节点独有的缓存、索引等数据,共享会直接导致文件锁冲突和缓存损坏。
- Azure文件共享仅适用于sharedHome,用于存放共享的插件、附件等跨节点访问的数据。
- SMB协议的文件锁机制与NFS存在差异,需针对性调整挂载选项以适配Jira的Felix缓存运行需求。
内容的提问来源于stack exchange,提问作者Sudama Tripathi
相关产品推荐
相关产品推荐

