在Google容器引擎(GKE)中允许特权容器

13

我正在使用从Google云开发者控制台部署的Google容器引擎(GKE)Kubernetes集群,集群版本为0.19.3。我想要运行一个特权容器,就像在Kubernetes NFS Server示例中一样:

apiVersion: v1
kind: Pod
metadata:
  name: nfs-server
  labels:
    role: nfs-server
spec:
  containers:
    - name: nfs-server
      image: jsafrane/nfs-data
      ports:
        - name: nfs
          containerPort: 2049
      securityContext:
        privileged: true

由于默认的Google容器引擎配置不允许特权容器,因此Kubernetes API会立即返回以下错误:

Error from server: Pod "nfs-server" is invalid: spec.containers[0].securityContext.privileged: forbidden '<*>(0xc20a027396)true'

我该如何在我的Google容器引擎集群中允许特权容器?

2个回答

10
更新:从 Kubernetes 1.1 版本开始,默认启用特权模式,现已在 Google 容器引擎中提供。
在 Google 容器引擎中,无法运行特权容器(包括 NFS 服务器在内的容器)。我们正在寻找解决方法(例如,在创建集群时添加标志以允许特权容器;将特权容器作为准入控制的一部分等等)。目前,如果您需要运行特权容器,则需要使用 GCE 供应商启动自己的集群。

1
谢谢更新,希望这很快被添加! - Caleb
现在Kubernetes已经发布1.0版本,你可以在这里查看它们的文档:http://kubernetes.io/v1.0/examples/nfs/README.html(仅供参考) - four43
1
Google容器引擎在1.0 Kubernetes版本中仍不支持特权模式。一旦1.1版本发布并默认启用特权模式,它将支持特权模式。 - Robert Bailey
1
更新:特权模式现在默认启用,从 Kubernetes 1.1 版本开始,在 Google 容器引擎中已经可用。 - Robert Bailey

0

这篇文章讲述了那个问题(请看结尾)。


那个 Github 问题解决了自行部署 Salt 服务提供者(gce、aws、vagrant)的 allow_privileged 标志,但并未涉及由 Google 管理的 Google Cloud Platform 服务 GKE(Google Container Engine)。 - Caleb
他将需要 allow_privileged=true 才能设置集群,对吗?我理解你的意思是“使用 GCE 提供程序创建自己的集群”。我错了吗? - Thibault Deheurles
kube-jenkins-imager 项目继续朝着能够特权的方向前进(https://github.com/GoogleCloudPlatform/kube-jenkins-imager/blob/master/cluster_up.sh)。这是一个 GKE 项目。它曾经运行过,但现在似乎技巧不起作用了。(可能是集群名称的更改?) - Thibault Deheurles
1
GKE 集群(https://cloud.google.com/container-engine/)由 Google 全面管理。Robert 在 Google 工作,并确认他们正在努力公开 allow_privileged 选项,但目前尚不可用。 - Caleb
1
我之前并不了解,因为连接到节点、进入配置并将 allow_privileged=true 切换打开,这对于容器引擎来说是有效的。我已经这样做了一个月。但是!似乎在 k8s 的 v0.19 版本中不再奏效了。有一个托管主节点的介绍,它破坏了这个技巧。 - Thibault Deheurles

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接