我正在尝试使用kubectl exec命令登录kubernetes容器。我成功了,但是它以root用户身份登录。作为系统构建的一部分,我还创建了其他一些用户。
正在使用的命令是“ kubectl exec -it / bin / bash”。我想这意味着在pod上运行/ bin / bash,这将导致外壳程序进入容器。
有人可以指导我以下内容吗?
请问我是否需要更多信息来回答这个问题?
谢谢
Anurag
答案 0 :(得分:2)
您可以使用<base href="." />
以非root用户身份登录。
运行su - <USERNAME>
以获得所有可用用户的列表,然后使用有效的Shell编译器标识用户,例如
cat /etc/passwd
或/bin/bash
使用/bin/sh
和/bin/nologin
作为集合编译器的用户被系统进程使用,因此,您不能以它们的身份登录。
答案 1 :(得分:0)
我认为这是因为容器用户是root用户,这就是为什么当您将kubectl exec放入其中时,默认用户是root用户。如果您使用非root用户运行容器或pod,则kubectl exec将不是root用户。
答案 2 :(得分:0)
在大多数情况下,只有一个进程在Kubernetes Pod内的Docker容器中运行。没有其他进程可以提供身份验证或授权功能。您可以尝试在一个容器中运行包含多个嵌套进程的包装器,但是这样会破坏容器化的想法,以最小的开销运行不可变的应用程序代码。
kubectl exec
在与主进程相同的容器环境中运行另一个进程,并且没有用于设置此进程的用户ID的选项。
不过,您可以通过将docker exec
与其他选项结合使用来实现:
--user , -u Username or UID (format: <name|uid>[:<group|gid>])
无论如何,这两篇文章可能对您在Kubernetes集群中运行IBM MQ很有帮助