我正在尝试调试我的应用程序,该应用程序在docker容器中的kubernetes中运行。该映像是使用sbt native-packager docker插件构建的。我想登录到pod并在那里进行调查,但是默认用户帐户(demiourgos728
)没有特权,并且我不知道如何切换到root帐户。
我尝试运行kubectl exec --user=root image -- bash
(未找到用户),也尝试在映像中运行su -
(身份验证失败),但没有成功。用于构建应用程序的基本映像是java:8。
这些是我在build.sbt中的docker设置:
.settings(
Seq(
dockerBaseImage := "java:8",
publishArtifact := false,
dockerExposedPorts ++= Seq(8088),
packageName in Docker := "api-endpoint"
))
答案 0 :(得分:2)
--user=root
中的 kubectl
用于在kube-apiserver上进行身份验证,而不是强制容器以用户身份在容器中执行命令。
如果您在节点上运行docker并想强制升级为root
,则可以ssh到运行容器的节点,然后运行:
$ docker exec -it --user=root <container-id> bash
# or
$ docker exec -it -u root <container-id> bash
您可以使用以下方法找出运行pod /容器的节点:
$ kubectl describe pod <pod-id>