我目前正在尝试使用Kubernetes,并且在本地运行的ESX上安装了一个小型集群。我在Fedora中使用Project Atomic将两个从属节点与一个主节点安装在一起。群集已全部安装好,并且似乎正在运行。但是我首先要启动并运行一个MySQL容器,但是无论我怎样尝试,我都无法使其运行。
apiVersion: v1
kind: Pod
metadata:
name: mysql
labels:
name: mysql
spec:
containers:
- resources:
limits :
cpu: 0.5
image: mysql:5.6
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
value: myPassw0rd
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
volumes:
- name: mysql-persistent-storage
nfs:
server: 10.0.0.2
path: "/export/mysql"
对于该卷,我已经尝试了各种解决方案,我尝试使用带有或不带有声明的持久卷。我尝试使用主机卷和emptyDir,但是在容器启动时,我总是会遇到此错误:
chown:更改“ / var / lib / mysql /”的所有权:不允许操作
我一定在做一些愚蠢的事情,但是不知道该怎么办?
好的,看来我可以回答我自己的问题,问题出在NFS共享中,该共享被用作持久卷。我在导出中将其设置为“ squash_all”,但它需要有一个“ no_root_squash”来允许root用户,以防docker容器被伪装在nfs绑定卷上。
不幸的是,将NFS用于dockerhub映像的故事并不好,因为许多映像都试图以这种方式进行穿刺
no_root_squash
,因此不建议使用,因为这意味着NFS客户端在NFS服务器上以root用户身份运行操作。不幸的是,目前,对于Dockerhub镜像,我还没有一个很好的方法来避免这种情况。从docker-compose安装角度来看,这看起来像什么?
感谢Renze de Vries!这有帮助!
NFS客户端上的no_root_squash很危险,请阅读此内容。您最好对此标志(root用户访问权限)有正当理由,否则sys admin和安全专家将使您活着:P