kubernetes允许特权本地测试集群

kubernetes允许特权本地测试集群,kubernetes,Kubernetes,我正忙着在本地pc上使用 它启动一个停靠的单节点k8s集群。我需要在k8s中运行一个特权容器(它运行docker以便从DockerFile构建图像)。到目前为止,我所做的是在pod配置中添加一个安全上下文privileged=true,它在尝试创建pod时返回禁止。我知道您必须使用--allow privileged=true在节点上启用privileged,我通过将参数arg添加到第二步(运行主节点和工作节点)来实现这一点,但在创建pod时它仍然返回禁止 有人知道如何在这个停靠的k8s中启用特

我正忙着在本地pc上使用

它启动一个停靠的单节点
k8s
集群。我需要在k8s中运行一个特权容器(它运行docker以便从DockerFile构建图像)。到目前为止,我所做的是在pod配置中添加一个安全上下文
privileged=true
,它在尝试创建pod时返回禁止。我知道您必须使用
--allow privileged=true
在节点上启用privileged,我通过将参数arg添加到第二步(运行主节点和工作节点)来实现这一点,但在创建pod时它仍然返回禁止

有人知道如何在这个停靠的k8s中启用特权进行测试吗

以下是我如何运行
k8s
master:

docker run --privileged --net=host -d -v /var/run/docker.sock:/var/run/docker.sock  gcr.io/google_containers/hyperkube:v1.0.1 /hyperkube kubelet --api-servers=http://localhost:8080 --v=2 --address=0.0.0.0 --allow-privileged=true --enable-server --hostname-override=127.0.0.1 --config=/etc/kubernetes/manifests

更新:从Kubernetes的1.1版本开始,特权模式现在默认启用(在apiserver和kubelet中)



要启用特权容器,除了Kubelet启动时,还需要将
--allow privileged
标志传递给Kubernetes apiserver。在单节点docker示例中,用于启动Kubernetes apiserver的清单文件被捆绑到映像中(从),但您可以制作该文件的本地副本,将
--allow privileged=true
标志添加到apiserver命令行,然后将在步骤2中传递给Kubelet的
--config
标志更改为包含修改文件的目录

我尝试将编辑后的master.json文件作为卷装载,并验证它是否正确装载。但是,这会导致api服务器不运行。您确定必须在api服务器上完成吗?从我所读到的内容来看,你必须在每个kubelet上允许特权。你需要在kubelet和apiserver上这样做(很抱歉,这之前不是很清楚,我已经更新了答案)。啊,我已经这样做了,实际上我没有正确地查看master.json,也没有意识到${VERSION}在运行makefile时,master.json中的内容正在动态更改。在修复后,它现在可以工作了。只是一个简短的补充说明,如果我要更改一些代码,比如添加存储插件或修改调度程序,那么将kubernetes dockerize有多容易?自动构建是否创建用于对kubernetes进行dockerize的
hyperkube
二进制文件?目前,makefile从官方k8s版本下载此二进制文件,而不是使用机器上构建的二进制文件。如果您想更改某些代码并运行scheduler或kubelet的自定义版本,您可以修改makefile以从您自己的docker注册表(私有或公共)推/拉,并构建您自己的hyperkube映像。