Kubernetes NFS持久卷权限被拒绝

我有一个应用程序运行在Kubernetes的一个吊舱上。
我想在永久性存储卷上存储一些输出文件日志

为此,我在NFS上创建了一个卷,并通过相关的卷声明将其绑定到POD。
当我尝试写入或加入共享文件夹时,我收到一条“权限被拒绝”消息,因为NFS显然是只读的

以下是我用来创建卷的json文件:

{
“种类”:“PersistentVolume”,
“apiVersion”:“v1”,
“元数据”:{
“名称”:“任务pv测试”
},
“规格”:{
“能力”:{
“存储”:“10Gi”
},
“nfs”:{
“服务器”:<IPAddress>,
“路径”:“/导出”
},
“访问模式”:[
“读写功能”
],
“persistentVolumeReclaimPolicy”:“删除”,
“storageClassName”:“标准”
}
}

以下是POD配置文件

种类:吊舱
版本:v1
元数据:
名称:体积测试
规格:
卷数:
-名称:任务pv测试存储
persistentVolumeClaim:
索赔名称:任务pv测试索赔
容器:
-名称:体积测试
图像:<ImageName>
体积数量:
-mountPath:/home
名称:任务pv测试存储
只读:false

有没有办法更改权限


更新

以下是PVC和NFS配置:

聚氯乙烯:

种类:PersistentVolumeClaim
版本:v1
元数据:
名称:任务pv测试索赔
规格:
storageClassName:标准
访问模式:
-读写
资源:
请求:
存储:3Gi

NFS配置

{
“种类”:“豆荚”,
“apiVersion”:“v1”,
“元数据”:{
“名称”:“nfs-client-provisioner-557b575fbc-hkzfp”,
“generateName”:“nfs-client-provisioner-557b575fbc-”,
“名称空间”:“默认值”,
“selfLink”:“/api/v1/namespaces/default/pods/nfs-client-provisioner-557b575fbc-hkzfp”,
“uid”:“918b1220-423a-11e8-8c62-8aaf7effe4a0”,
“资源版本”:“27228”,
“creationTimestamp”:“2018-04-17T12:26:35Z”,
“标签”:{
“应用程序”:“nfs客户端供应器”,
“pod模板哈希”:“1136131967”
},
“ownerReferences”:[
{
“apiVersion”:“扩展/v1beta1”,
“种类”:“复制集”,
“名称”:“nfs-client-provisioner-557b575fbc”,
“uid”:“3239b14a-4222-11e8-8c62-8aaf7effe4a0”,
“控制员”:对,
“blockownerdelement”:正确
}
]
},
“规格”:{
“卷”:[
{
“名称”:“nfs客户端根目录”,
“nfs”:{
“服务器”:<IPAddress>,
“路径”:“/Kubernetes”
}
},
{
“名称”:“nfs-client-provisioner-token-fdd2c”,
“秘密”:{
“secretName”:“nfs-client-provisioner-token-fdd2c”,
“默认模式”:420
}
}
],
“容器”:[
{
“名称”:“nfs客户端供应器”,
“图像”:“码头io/外部存储/nfs客户端供应器:最新版本”,
“环境”:[
{
“名称”:“供应者名称”,
“值”:“<IPAddress>/Kubernetes”
},
{
“名称”:“NFS_服务器”,
“值”:<IPAddress>
},
{
“名称”:“NFS_路径”,
“值”:“/Kubernetes”
}
],
“资源”:{},
“卷数”:[
{
“名称”:“nfs客户端根目录”,
“装载路径”:“/persistentvolumes”
},
{
“名称”:“nfs-client-provisioner-token-fdd2c”,
“只读”:正确,
“mountPath”:“/var/run/secrets/kubernetes.io/serviceaccount”
}
],
“terminationMessagePath”:“/dev/终止日志”,
“terminationMessagePolicy”:“文件”,
“imagePullPolicy”:“始终”
}
],
“重新启动策略”:“始终”,
“terminationGracePeriodSeconds”:30,
“dnsPolicy”:“ClusterFirst”,
“serviceAccountName”:“nfs客户端供应器”,
“serviceAccount”:“nfs客户端供应器”,
“节点名称”:“det-vkube-s02”,
“securityContext”:{},
“schedulerName”:“默认计划程序”,
“容忍”:[
{
“键”:“node.kubernetes.io/未准备就绪”,
“操作员”:“存在”,
“效果”:“不执行”,
“容忍秒”:300
},
{
“key”:“node.kubernetes.io/unreachable”,
“操作员”:“存在”,
“效果”:“不执行”,
“容忍秒”:300
}
]
},
“地位”:{
“阶段”:“运行”,
“主机IP”:<IP地址>,
“podIP”:“IP地址”;,
“开始时间”:“2018-04-17T12:26:35Z”,
“qosClass”:“最佳努力”
}
}

我刚刚从nfs配置中删除了一些状态信息,以使其更短

如果为pod配置设置了正确的securityContext,则可以确保使用正确的权限装入卷

例如:

apiVersion:v1
种类:豆荚
元数据:
名称:demo
规格:
securityContext:
金融稳定组:2000年
卷数:
-名称:任务pv测试存储
persistentVolumeClaim:
索赔名称:任务pv测试索赔
容器:
-名称:demo
图片:示例图片
体积数量:
-名称:任务pv测试存储
挂载路径:/data/demo

在上面的示例中,存储将装入具有2000组id的/data/demo,该组id由fsGroup设置。通过设置fsGroup,容器的所有进程也将是补充组id 2000的一部分,因此您应该可以访问装入的文件

您可以在此处阅读有关pod安全上下文的更多信息:https://kubernetes.io/docs/tasks/configure-pod-container/security-context/

发表评论