我正在尝试使用非根用户在K8S中运行tomcat容器,为此,我在Docker Image中设置了用户'tomcat‘的适当权限。我有一个启动脚本,它在/opt/var/logs中创建一个目录(在容器启动期间),并启动tomcat服务。
#steps in Dockerfile
#adding tomcat user and group and permission to /opt directory
addgroup tomcat -g 1001 && \
adduser -D -u 1001 -G tomcat tomcat && \
chown -R tomcat:tomcat /opt
#switch user
User tomcat当使用部署部署而没有任何卷映射时,pod在K8S中运行良好。
但是我从启动脚本中得到了一个权限被拒绝的错误(权限被拒绝:创建目录/opt/var/logs/docker/),当我用持久卷声明映射部署时,它无法创建一个目录,即使我按照这里解释的那样设置了fsgroup,https://kubernetes.io/docs/tasks/configure-pod-container/security-context/也是如此。
我有一个hostPath类型的持久化卷。
部署定义如下。
apiVersion: apps/v1
kind: Deployment
metadata:
name: ms-tomcat
namespace: ms-ns
labels:
app: tomcat
spec:
selector:
matchLabels:
app: tomcat
template:
metadata:
labels:
app: tomcat
spec:
securityContext:
fsGroup: 2000
runAsUser: 1001
runAsGroup: 1001
containers:
- name: tomcat
image: docker-registry.test.com/tomcat:1.2
volumeMounts:
- name: logging-volume
mountPath: /opt/var/logs/docker
imagePullSecrets:
- name: test
volumes:
- name: logging-volume
persistentVolumeClaim:
claimName: nonroot-test-pvc聚氯乙烯
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nonroot-test-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
storageClassName: local-node-sc
volumeName: nonroot-test-pv发布于 2021-06-22 16:19:12
您需要将fsGroup设置为1001,即runAsGroup。
在任何路径中挂载任何卷时,默认情况下挂载的目录的所有者是root。在K8s世界中,您不能更改挂载路径的所有者。但在k8S中,您有权使用FsGroup设置组ID。使用FsGroup,您实际上将权限授予了某个用户组。
由于您当前的用户UID为1001,GID为1001,因此您需要授予当前GID 1001的权限。
apiVersion: apps/v1
kind: Deployment
metadata:
name: ms-tomcat
namespace: ms-ns
labels:
app: tomcat
spec:
selector:
matchLabels:
app: tomcat
template:
metadata:
labels:
app: tomcat
spec:
securityContext:
fsGroup: 1001 #<--- change here
runAsUser: 1001
runAsGroup: 1001
containers:
- name: tomcat
image: docker-registry.test.com/tomcat:1.2
volumeMounts:
- name: logging-volume
mountPath: /opt/var/logs/docker
imagePullSecrets:
- name: test
volumes:
- name: logging-volume
persistentVolumeClaim:
claimName: nonroot-test-pvchttps://stackoverflow.com/questions/68079774
复制相似问题