Kubernetes:Linux docker-multinode集群中的特权容器

时间:2016-01-13 20:07:52

标签: ubuntu containers kubernetes

(我已经看了一些其他线程,但显然现在最新代码支持特权模式,所以我想知道我是否遇到了错误。)

我有两个物理服务器:都运行Linux(ubuntu),昨天使用github的最新kubernetes代码。

我正在运行docs/getting-started-guides/docker-multinode/master.sh(& worker.sh)。

在主节点上:

$ kubectl create -f examples/nfs/nfs-server-rc.yaml
The ReplicationController "nfs-server" is invalid. 
spec.template.spec.containers[0].securityContext.privileged: forbidden '<*>(0xc208389770)true'

问题:这是否受到支持?或者我做错了什么。或者这是一个错误吗?

master.sh代码已提供--allow-privileged=true选项。

这些以下选项已经设定,但并没有很好的信念,只是因为我在其他地方看到了一些讨论设置它们。

/etc/default/kubelet: 
    `KUBELET_OPTS="--allow_privileged=true"`

/etc/default/kube-apiserver: 
    `KUBE_APISERVER_OPTS="--allow_privileged=true"`

主配置:

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"2+", GitVersion:"v1.2.0-alpha.5.833+2e5da8b881e2f5", GitCommit:"2e5da8b881e2f5b6dfb66653acf4aaa1ca1f398e", GitTreeState:"clean"}
Server Version: version.Info{Major:"1", Minor:"1", GitVersion:"v1.1.3", GitCommit:"6a81b50c7e97bbe0ade075de55ab4fa34f049dc2", GitTreeState:"clean"}

$ docker version
Client:
Version:      1.9.1
API version:  1.21
Go version:   go1.4.2
Git commit:   a34a1d5
Built:        Fri Nov 20 13:12:04 UTC 2015
OS/Arch:      linux/amd64
Server:
Version:      1.9.1
API version:  1.21
Go version:   go1.4.2
Git commit:   a34a1d5
Built:        Fri Nov 20 13:12:04 UTC 2015
OS/Arch:      linux/amd64

2 个答案:

答案 0 :(得分:6)

从kubernetes v1.1开始,pod中的任何容器都可以使用容器规范的SecurityContext上的特权标志启用特权模式。

要在容器规范的privileged:true内部启用特权模式嵌套securityContext

"securityContext": {
    "privileged": true

正如Janet所说,为kubelet和kube-apiserver设置--allow-privileged=true并重新启动它们:

sudo /etc/init.d/kubelet restart
sudo /etc/init.d/kube-apiserver restart

并使用ps -ef | grep kube命令验证标志是否已更改。

答案 1 :(得分:0)

您需要为--allow-privileged=truekubelet设置kube-apiserver。看起来master.sh仅在kubelet中设置了./cluster/images/hyperkube/master-multi.json。您可以修改文件--allow-privileged=true以为apiserver设置hyperkube(应该在21到30行左右)并重建BaseObject.__init__()图片。