GKE集群部署Loki Helm Chart遇只读文件系统错误的解决咨询
解决Loki部署中"mkdir /loki/tsdb-shipper-active: read-only file system"错误
这个错误的核心原因是Loki的TSDB Shipper组件需要在本地文件系统创建可写目录,但容器内的/loki目录处于只读状态,无法完成写入操作。以下是具体解决步骤:
1. 给/loki目录挂载可写存储卷
默认情况下,Loki Helm Chart可能未为/loki路径挂载可写卷,需显式配置:
方案A:使用持久化卷(生产环境推荐)
在values.yaml中添加持久化配置:
persistence: enabled: true size: 10Gi # 替换为你的GCP存储类,比如GKE自带的standard-rwo storageClassName: "standard-rwo" accessModes: - ReadWriteOnce
方案B:使用临时emptyDir卷(测试环境适用)
如果不需要持久化本地数据,可挂载临时卷:
extraVolumes: - name: loki-temp-data emptyDir: {} extraVolumeMounts: - name: loki-temp-data mountPath: /loki
2. 统一存储配置避免冲突
你的配置中同时存在storage和storageConfig字段,可能引发路径逻辑冲突。建议合并配置,保留storageConfig并移除重复的storage字段,调整后示例:
loki: auth_enabled: false commonConfig: ring: instance_addr: 127.0.0.1 kvstore: store: inmemory replication_factor: 1 path_prefix: /loki schemaConfig: configs: - from: 2024-07-22 store: tsdb object_store: gcs schema: v13 index: prefix: index_ period: 24h storageConfig: tsdb_shipper: active_index_directory: /loki/index cache_location: /loki/index_cache gcs: bucket_name: ab7d14a0f02ac9ab-loki-logs-bucket serviceAccount: annotations: iam.gke.io/gcp-service-account: "loki-sa@linear-reporter.iam.gserviceaccount.com"
3. 验证容器运行权限
确保Loki容器以拥有/loki目录读写权限的用户运行,可通过securityContext配置:
securityContext: runAsUser: 10001 runAsGroup: 10001 fsGroup: 10001
4. 确认GCS服务账号权限(附加检查)
虽然当前错误是本地文件系统问题,但需确保服务账号loki-sa@linear-reporter.iam.gserviceaccount.com拥有GCS存储桶ab7d14a0f02ac9ab-loki-logs-bucket的roles/storage.objectAdmin或等价权限,避免后续存储操作失败。
内容的提问来源于stack exchange,提问作者alex-shef
相关产品推荐
相关产品推荐

