(我已经看了一些其他线程,但显然现在最新代码支持特权模式,所以我想知道我是否遇到了错误。)
我有两个物理服务器:都运行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
答案 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=true
和kubelet
设置kube-apiserver
。看起来master.sh
仅在kubelet
中设置了./cluster/images/hyperkube/master-multi.json
。您可以修改文件--allow-privileged=true
以为apiserver设置hyperkube
(应该在21到30行左右)并重建BaseObject.__init__()
图片。