如何在kubernetes中以非根用户身份装载路径
我在kubernetes集群中部署了一个mysql监视器应用程序映像,它以非root用户的身份运行。当我试图挂载一个路径以使数据持久化时,它会覆盖必须存在我的应用程序配置文件的目录(通过删除该路径中的所有内容来创建一个新目录)。即使我仍然尝试使用init container,我也无法挂载它如何在kubernetes中以非根用户身份装载路径,kubernetes,Kubernetes,我在kubernetes集群中部署了一个mysql监视器应用程序映像,它以非root用户的身份运行。当我试图挂载一个路径以使数据持久化时,它会覆盖必须存在我的应用程序配置文件的目录(通过删除该路径中的所有内容来创建一个新目录)。即使我仍然尝试使用init container,我也无法挂载它 my docker file: FROM centos:7 ENV DIR /binaries ENV PASS admin WORKDIR ${DIR} COPY libstdc++-4.8.5-39.el
my docker file:
FROM centos:7
ENV DIR /binaries
ENV PASS admin
WORKDIR ${DIR}
COPY libstdc++-4.8.5-39.el7.x86_64.rpm ${DIR}
COPY numactl-libs-2.0.12-3.el7.x86_64.rpm ${DIR}
COPY mysqlmonitor-8.0.18.1217-linux-x86_64-installer.bin ${DIR}
RUN yum install -y libaio && yum -y install gcc && yum -y install gcc-c++ && yum -y install compat-libstdc++-33 && yum -y install libstdc++-devel && yum -y install elfutils-libelf-devel && yum -y install glibc-devel && yum -y install libaio-devel && yum -y install sysstat
RUN yum install -y gcc && yum install -y make && yum install -y apr-devel && yum install -y openssl-devel && yum install -y java
RUN rpm -ivh numactl-libs-2.0.12-3.el7.x86_64.rpm
RUN useradd sql
RUN chown sql ${DIR}
RUN chmod 777 ${DIR}
RUN chmod 755 /home/sql
USER sql
WORKDIR ${DIR}
RUN ./mysqlmonitor-8.0.18.1217-linux-x86_64-installer.bin --installdir /home/sql/mysql/enterprise/monitor --mode unattended --tomcatport 18080 --tomcatsslport 18443 --adminpassword ### --dbport 13306
RUN rm -rf /binaries/*
VOLUME /home/mysql/mysql/enterprise/monitor/mysql/data
ENTRYPOINT ["/bin/bash", "-c", "/home/sql/mysql/enterprise/monitor/mysqlmonitorctl.sh start && tail -f /home/sql/mysql/enterprise/monitor/apache-tomcat/logs/mysql-monitor.log"]
这似乎与作为非根用户装载无关,但更重要的是,在现有目录上装载卷将导致该目录看起来像是空的(或者包含卷上已经存在的任何内容)。如果您将配置存储在希望位于卷上的非卷上,则需要将该卷装载到其他位置(因此不会覆盖您的本地配置),并将该配置复制到装载的卷位置。您可以在init容器中执行此操作,但注意不要在每次启动容器时覆盖卷内容。这似乎与作为非根用户装载无关,但更重要的是,在现有目录上装载卷将导致该目录看起来像是空的(或包含卷上已存在的任何内容)。如果您将配置存储在希望位于卷上的非卷上,则需要将该卷装载到其他位置(以便不会覆盖您的本地配置)并将该配置复制到已装入的卷位置。您可以在init容器中执行此操作,但请注意不要在每次启动容器时都覆盖卷内容。在装入路径时,我面临问题。我的目标是使安装目录中的数据即使在pod重新启动时也保持不变。但它的创建正在替换为新目录。输出:[sql@mypod-67cb4f85b8-9km26数据]$[sql@mypod-67cb4f85b8-9km26数据]$pwd/home/sql/mysql/enterprise/mysql/data[sql@mypod-67cb4f85b8-9km26数据]$ls[sql@mypod-67cb4f85b8-9km26数据]$check my dockerfile and deploymemt file in my question请在init容器中使用
/home/sql/mysql/enterprise/monitor
装载路径,然后在主容器中使用/home/sql/mysql/enterprise/monitor/mysql/data
装载路径。这将卷的内容装载到该装载路径容器中的H,在2个容器之间是不一致的,因此会导致意想不到的行为。您可能需要考虑将主容器的安装路径更改为<代码> /home /SQL/MySQL/Enginer/Mealths<代码>与init容器一致的输出路径。安装路径时,我面临问题。o即使pod重新启动,也要使我的安装目录中的数据保持不变。但它会创建一个新目录。输出:[sql@mypod-67cb4f85b8-9km26数据]$[sql@mypod-67cb4f85b8-9km26数据]$pwd/home/sql/mysql/enterprise/mysql/data[sql@mypod-67cb4f85b8-9km26数据]$ls[sql@mypod-67cb4f85b8-9km26数据]$check my dockerfile and deploymemt file in my question请在init容器中使用/home/sql/mysql/enterprise/monitor
装载路径,然后在主容器中使用/home/sql/mysql/enterprise/monitor/mysql/data
装载路径。这将卷的内容装载到该装载路径容器中的H,在2个容器之间是不一致的,因此会导致意外的行为。您可能需要考虑将主容器的安装路径更改为<代码> /home /SQL/MySQL/Enginer/Mealths<代码>的输出路径,与init容器一致。
my deployment file
apiVersion: apps/v1
kind: Deployment
metadata:
name: mypod
spec:
replicas: 1
selector:
matchLabels:
app: mem
template:
metadata:
labels:
app: mem
spec:
containers:
- name: mem
image: 22071997/mem
command:
volumeMounts:
- mountPath: /home/sql/mysql/enterprise/monitor/mysql/data
name: volume
volumes:
- name: volume
persistentVolumeClaim:
claimName: mem-pvc1
initContainers:
- name: permissionsfix
image: alpine:latest
command: ["/bin/sh", "-c"]
args:
- chown -R 1000:1000 /home/sql/mysql/enterprise/monitor/ && chmod -R 777 /home/sql/mysql/enterprise/monitor/ ;
volumeMounts:
- name: volume
mountPath: /home/sql/mysql/enterprise/monitor
output:
[sql@mypod-775764db45-bzs8n enterprise]$ cd monitor/mysql
[sql@mypod-775764db45-bzs8n mysql]$ ls
LICENSE LICENSE.router README.meb bin docs lib my-large.cnf my-small.cnf new runtime support-files var
LICENSE.meb README README.router data include man my-medium.cnf my.cnf run share tmp
[sql@mypod-775764db45-bzs8n mysql]$ cd data
[sql@mypod-775764db45-bzs8n data]$ ls
mypod-775764db45-bzs8n.err