Kubernetes 使用su时无法打开会话

Kubernetes 使用su时无法打开会话,kubernetes,Kubernetes,我试图启动一个容器,该容器通过作为另一个用户运行多个命令来启动其进程。使用su执行这些命令。我最初认为这是存储后端的一个问题,因为容器是在devicemapper上构建的,但在aufs上运行,但是当我使用docker run时,容器正确启动。我还认为这是容器具有特权的问题,但我已经采取了在集群上运行特权容器所必需的步骤,并且在我的ReplicationController定义中添加了privileged:true标志。感谢您的帮助 库贝v1 Docker 1.7.0 Mesos 0.23.0 编

我试图启动一个容器,该容器通过作为另一个用户运行多个命令来启动其进程。使用
su
执行这些命令。我最初认为这是存储后端的一个问题,因为容器是在devicemapper上构建的,但在aufs上运行,但是当我使用docker run时,容器正确启动。我还认为这是容器具有特权的问题,但我已经采取了在集群上运行特权容器所必需的步骤,并且在我的ReplicationController定义中添加了
privileged:true
标志。感谢您的帮助

库贝v1

Docker 1.7.0

Mesos 0.23.0

编辑:经过一些故障排除,我的问题是Kubernetes没有正确地将容器设置为特权。尽管我已经为我的apiserver设置了--allow privileged=true,并且我的ReplicationController中有以下代码片段:

spec:
  containers:
    - name: oracledb
      image: bradams/devops:oracle-test
      privileged: true
不确定我还应该在这里做什么。

正确的语法是:


规格:
容器:
-名称:oracledb
图片:bradams/devops:oracle测试
securityContext:
特权:真的

您缺少
securityContext:
下的嵌套。这在v1beta3和v1之间发生了变化,记录如下:


如果您尝试使用
kubectl create--validate=true…
创建pod,那么我认为这个问题会被发现,并显示一条错误消息。

一些可以帮助回答您的问题的尝试:如果在您的一个节点上直接使用docker启动,容器是否按预期运行?如果您使用以下命令以交互方式启动Pod会怎么样:kubectl run-i--tty--sh;那么你能输入su命令并让它们工作吗?首先,我已经试过了,是的,它工作正常。关于第二点,我会试一试,然后再报告。所以第二个选项不起作用。环顾四周,我认为这可能是一个文件限制问题,但更改它并没有任何效果。我认为Kubernetes可能没有正确地将容器设置为特权。在这一点上,我想不出任何其他答案。谢谢你。事实上,我刚刚发现我运行的二进制文件版本错误,所以在更新并弄清楚语法后,我能够克服这个问题。现在的问题是,尽管我的apiserver应该允许特权容器,但当Mesos调度任务并在节点上启动kubelet时,它拒绝以--allow privileged=true开始。我可以在Mesos slave日志中看到它以false标志开始。