使用helm charts安装grafana,部署顺利,grafana ui已启动,需要添加存在持久卷,运行以下cmd:
helm install grafana grafana/grafana -n prometheus --set persistence.enabled=true --set persistence.existingClaim=grafana-pvc
init 容器崩溃,日志如下:
kubectl logs grafana-847b88556f-gjr8b -n prometheus -c init-chown-data
chown: /var/lib/grafana: Operation not permitted
chown: /var/lib/grafana: Operation not permitted
在检查部署 yaml 时发现此部分:
initContainers:
- command:
- chown
- -R
- 472:472
- /var/lib/grafana
image: busybox:1.31.1
imagePullPolicy: IfNotPresent
name: init-chown-data
resources: {}
securityContext:
runAsNonRoot: false
runAsUser: 0
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/lib/grafana
name: storage
restartPolicy: Always
schedulerName: default-scheduler
securityContext:
fsGroup: 472
runAsGroup: 472
runAsUser: 472
serviceAccount: grafana
serviceAccountName: grafana
为什么操作在
runAsUser: 0
下运行却失败? PVC 有 access:ReadWriteMany
,有什么解决方法吗?还是我错过了什么
谢谢!!
实际上,有时您可能希望避免更改存储提供商设置,或者根本不可能。
就我而言,问题中描述的错误是在部署 kube-prometheus-stack helm 图表时发生的。我无法访问存储提供程序设置,因此我通读了图表的示例值,我注意到以下部分:
initChownData:
## If false, data ownership will not be reset at startup
## This allows the prometheus-server to be run with an arbitrary user
##
enabled: true
我将
enabled
更改为 false,并且在 helm upgrade ...
pod 成功初始化并且存储按预期工作后。这似乎是比更改存储提供商的安全策略更安全的解决方案,并且当然需要更少的工作。
NFS 默认情况下打开
root_squash
模式,该模式在功能上以超级用户身份禁用客户端上的 uid 0(将这些请求映射到其他 UID/GID,通常是 65534)。您可以在挂载选项中禁用此功能,或使用 NFS 以外的其他内容。我会推荐后者,NFS 很糟糕。
如何在 efs 中执行此操作? 我正在使用 efs 存储类并面临同样的问题