- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个 Kubernetes PVC 和一个使用它的 Deploy。
在 yaml 中指定 uid 和 gid 必须为 1000。
但是在部署时,卷安装了不同的 ID,所以我没有写访问权限。
如何有效地为 PVC 指定 uid 和 gid?
PVC yarn :
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jmdlcbdata
annotations:
pv.beta.kubernetes.io/gid: "1000"
volume.beta.kubernetes.io/mount-options: "uid=1000,gid=1000"
volume.beta.kubernetes.io/storage-class: default
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "2Gi"
storageClassName: "default"
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
creationTimestamp: null
name: jmdlcbempty
namespace: default
spec:
replicas: 1
strategy:
type: Recreate
template:
metadata:
creationTimestamp: null
labels:
name: jmdlcbempty
spec:
securityContext:
runAsUser: 1000
fsGroup: 1000
volumes:
- name: jmdlcbdata
persistentVolumeClaim:
claimName: jmdlcbdata
containers:
- name: myalpine
image: "alpine"
command:
- /bin/sh
- "-c"
- "sleep 60m"
imagePullPolicy: IfNotPresent
volumeMounts:
- mountPath: /usr/share/logstash/data
name: jmdlcbdata
$ kubectl get pvc; kubectl get pods;
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
jmdlcbdata Bound pvc-6dfcdb29-8a0a-11e8-938b-1a5d4ff12be9 20Gi RWO default 2m
NAME READY STATUS RESTARTS AGE
jmdlcbempty-68cd675757-q4mll 1/1 Running 0 6s
$ kubectl exec -it jmdlcbempty-68cd675757-q4mll -- ls -ltr /usr/share/logstash/
total 4
drwxr-xr-x 2 nobody 42949672 4096 Jul 17 21:44 data
最佳答案
经过一些实验,终于可以给出答案了。
有几种方法可以从特定的 UID 和 GID 运行容器中的进程:
runAsUser
字段在 securityContext
在 Pod 定义中为在 Pod 中的容器中运行的第一个进程指定用户 ID。 fsGroup
字段在 securityContext
在 Pod 中指定与 Pod 中的所有容器关联的组 ID。该组 ID 还与挂载到 Pod 的卷以及在这些卷中创建的任何文件相关联。 pv.beta.kubernetes.io/gid
的 PersistentVolume 时注释,被注释的 GID 以与在 Pod 的安全上下文中指定的 GID 相同的方式应用于 Pod 中的所有容器。 PersistentVolume
设置安装选项。 s。一个
PersistentVolume
是集群中由管理员配置的一块存储。此外,它可以使用
StorageClass
动态配置。 .因此,您可以在
PersistentVolume
中指定挂载选项。当您手动创建它时。或者您可以在
StorageClass
中指定它们,以及
PersistentVolumeClaim
从该类请求的每个 PersistentVolume会有这些选项。
mountOptions
属性比
volume.beta.kubernetes.io/mount-options
注释和
storageClassName
属性而不是
volume.beta.kubernetes.io/storage-class
注解。这些注释在过去被用来代替属性,现在它们仍然有效,但是在 future 的 Kubernetes 版本中它们将被完全弃用。下面是一个例子:
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: with-permissions
provisioner: <your-provider>
parameters:
<option-for your-provider>
reclaimPolicy: Retain
mountOptions: #these options
- uid=1000
- gid=1000
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "2Gi"
storageClassName: "with-permissions" #these options
uid=1000, gid=1000
例如,FAT 或 NTFS 等文件系统的挂载选项,但不适用于 EXT4。
volume.beta.kubernetes.io/mount-options: "uid=1000,gid=1000"
不起作用,因为它是 StorageClass 或 PV 的一个选项。 storageClassName: "default"
和 volume.beta.kubernetes.io/storage-class: default
在你的 PVC yaml 中,但他们也在做同样的事情。另外,default
StorageClass
默认情况下没有挂载选项。 securityContext.fsGroup: 1000
相同部署定义中的选项,所以第一个是不必要的。 StorageClass
使用所需的安装选项(
uid=1000, gid=1000
),并使用 PVC 从中请求 PV,如上例所示。之后,您需要使用
Deployment
定义与
SecurityContext
设置对已安装 PVC 的访问。但请确保您使用的是适用于您的文件系统的挂载选项。
关于Kubernetes Persistent Volume Claim 安装了错误的 gid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51390789/
docker volume 命令中使用的两个标志之间的确切区别是什么 -v和 --volumes-from .在我看来,他们正在做同样的工作,请考虑以下场景。 首先让我们创建一个名为 myvol 的卷
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我正在尝试创建一个 docker 容器,该容器具有一个应包含多个文件夹的外部卷,因此我的 Dockerfile 简化版本如下所示: FROM ubuntu:12.04 # Create a volum
我正在使用打开 Kubernetes 选项的 docker 应用程序运行 mac OSX Catalina。我使用以下 yaml 和命令创建了一个 PersistentVolume。 apiVersi
我看到了 docker-compose 模式,但我很困惑。制作组合容器的最佳方法是什么。什么时候应该使用 link 或 volumes_from。我什么时候应该使用 volumes_from, vol
我对创建 docker volume create my-vol 之间的区别感到困惑。和 VOLUME ["/var/www"] . 我的理解是: 1) docker volume create my
要在 Kubernetes POD 中使用存储,我可以使用 volumes和 persistent volumes .而卷像emptyDir是短暂的,我可以使用 hostPath以及许多其他基于云的卷
使用 btrfs 驱动程序在 RHEL 7.1 上运行 docker v1.10.1。我有一个单独的 xfs 分区,我想在其中挂载数据卷。我宁愿让 docker 本地管理卷(即使用 docker vo
我想在我的 docker-compose 文件中设置一个标志,如果我不需要我的数据库卷是否不会在容器外持久化,但我仍然想要一个卷条目,如果我的数据库很小那么我不希望它执着于外。 最佳答案 您可以使用两
我是 Kubernetes 的新手,我很难理解 Kubernetes 中持久存储背后的整个想法。 这就足够了吗,或者我必须创建持久卷,如果我只部署这两个对象而不创建 PV 会发生什么情况? 存储应该在
我正在研究 kubeflow 管道以及管道的不同组件如何相互链接。为此,我使用了官方 GitHub 存储库中提供的 MNIST 项目示例。但我无法理解以下代码片段中 vop.volume 和 mnis
我正在尝试设置 Dockerfile将我的主机目录挂载到我指定的 docker 容器目录(因此代码更改将立即反射(reflect)出来)。当我运行 docker run -p 3000:3000 -d
我有一个使用 docker-compose 在 Ubuntu 服务器上运行的 Jira 实例。 我最初通过将 jira 安装文件夹映射到名为 jiravolume 的 docker 卷来设置它。 vo
如何检测在 iOS/Android 上是否按下了 + 或 - 按钮? 最佳答案 我认为它对 iOS 有帮助.. - (void)viewWillAppear:(BOOL)animated {
我是 Docker 的新手。我在 Windows 10 企业版 上运行,并尝试将在 Windows 上运行的现有应用容器化(因此它是一个 Windows 容器)。我不知道这是否重要,但容器相当大 (8
我已经断断续续地搜索文档、邮件列表几天了,但似乎找不到答案。 我有一个 OS X 应用程序,除其他外,它可以使用 kAudioDevicePropertyVolumeScalar 等查询可用的硬件设备
了解了docker(在Ubuntu 18.04 LTE(仿生)上),特别是关于管理持久数据的知识,我发现docker volumes。 按照那里的示例,我尝试将一些文件添加到卷中,然后从容器中列出它们
在这段代码中,如果Volume>10mil,我开始将体积添加到Cumulative Volume,我们在蜡烛下面创建一条线,一直延伸到当前条,因此Volume>10mil,我们创建一条线,Cumvol
这个问题在这里已经有了答案: Kubernetes NFS Persistent Volumes - multiple claims on same volume? Claim stuck in p
使用 docker-compose synthax v2,我们能够做这样的事情: version: '2' services: app: image: tianon/true vo
我是一名优秀的程序员,十分优秀!