Kubernetes : hostPath 存储权限
Kubernetes : hostPath storage permissions
问题:无法写入容器内的目录。
我正在使用 hostPath 存储来满足持久存储要求。我没有使用 PV anc PVC 来使用 hospath,而是使用它的卷插件。例如
{
"apiVersion": "v1",
"id": "local-nginx",
"kind": "Pod",
"metadata": {
"name": "local-nginx"
},
"spec": {
"containers": [
{
"name": "local-nginx",
"image": "fedora/nginx",
"volumeMounts": [
{
"mountPath": "/usr/share/nginx/html/test",
"name": "localvol"
}
]
}
],
"volumes": [
{
"name": "localvol",
"hostPath": {
"path": "/logs/nginx-logs"
}
}
]
}
}
注意:nginx pod 仅用于示例。
我在主机上的目录正在创建为 "drwxr-xr-x. 2 root root 6 Apr 23 18:42 /logs/nginx-logs"
并且相同的权限反映在 pod 内部,但由于它是 755,其他用户,即 pod 内的用户无法 write/create 挂载目录中的文件。
问题:
有什么办法可以避免上述问题?
在Hostpath存储的情况下,有没有办法指定目录权限?
有没有我可以在下面的定义中设置的字段来提供所需的权限?
"volumes":{
"name": "vol",
"hostPath": {
"path": "/any/path/it/will/be/replaced"}}
我认为您遇到的问题与用户或组无关(您的 pod 定义没有 RunAsUser 规范,因此默认情况下它是 运行 作为 root),而是与 SELinux 策略有关.为了使用 rw 权限将主机目录挂载到 pod,它应该具有以下标签:svirt_sandbox_file_t
。您可以使用以下命令检查当前的 SElinux 标签:ls -laZ <your host directory>
并将其更改为 chcon -Rt svirt_sandbox_file_t <your host directory>
.
问题:无法写入容器内的目录。
我正在使用 hostPath 存储来满足持久存储要求。我没有使用 PV anc PVC 来使用 hospath,而是使用它的卷插件。例如
{
"apiVersion": "v1",
"id": "local-nginx",
"kind": "Pod",
"metadata": {
"name": "local-nginx"
},
"spec": {
"containers": [
{
"name": "local-nginx",
"image": "fedora/nginx",
"volumeMounts": [
{
"mountPath": "/usr/share/nginx/html/test",
"name": "localvol"
}
]
}
],
"volumes": [
{
"name": "localvol",
"hostPath": {
"path": "/logs/nginx-logs"
}
}
]
}
}
注意:nginx pod 仅用于示例。
我在主机上的目录正在创建为 "drwxr-xr-x. 2 root root 6 Apr 23 18:42 /logs/nginx-logs" 并且相同的权限反映在 pod 内部,但由于它是 755,其他用户,即 pod 内的用户无法 write/create 挂载目录中的文件。
问题:
有什么办法可以避免上述问题?
在Hostpath存储的情况下,有没有办法指定目录权限?
有没有我可以在下面的定义中设置的字段来提供所需的权限?
"volumes":{
"name": "vol",
"hostPath": {
"path": "/any/path/it/will/be/replaced"}}
我认为您遇到的问题与用户或组无关(您的 pod 定义没有 RunAsUser 规范,因此默认情况下它是 运行 作为 root),而是与 SELinux 策略有关.为了使用 rw 权限将主机目录挂载到 pod,它应该具有以下标签:svirt_sandbox_file_t
。您可以使用以下命令检查当前的 SElinux 标签:ls -laZ <your host directory>
并将其更改为 chcon -Rt svirt_sandbox_file_t <your host directory>
.