Kubernetes:了解特权容器的过程管理

时间:2019-05-28 14:03:01

标签: docker kubernetes

我最近在尝试解决一个不寻常的问题时遇到了不正常的行为。

我有一个运行需要特权的容器的容器。另外,我在Sidecar容器中运行了另一个二进制文件,该文件在更改文件后将SIGHUP发送到在特权容器中运行的进程。边车容器没有特权,但是设置了SYS_PTRACE能力。

注意:吊舱的规格(https://v1-13.docs.kubernetes.io/docs/tasks/configure-pod-container/share-process-namespace/)为shareProcessNamespace: true

在注意到某些操作没有按预期进行后(主容器中的进程似乎没有获得应有的SIGHUP)之后,我登录到sidecar容器,并尝试将SIGHUP手动发送至主容器使用kill -1 <pid>。我“权限被拒绝”。

大约6个小时的调试之后,我终于意识到这是因为主容器具有特权,而sidecar容器却没有特权。在sidecar容器上设置privileged: true已解决了问题,但我仍然有疑问:

  • 查看特权容器的ls /proc/<pid>会显示与非特权容器相同的权限,那么为什么“权限被拒绝”问题呢?

  • 即使没有对sidecar容器进行特权设置,在minikube中运行SIGHUP到主容器也没有问题。为什么?它与主机操作系统或所使用的容器运行时有关吗?

  • 除了将sidecar容器设置为也有特权将信号从非特权容器发送到特权容器之外,还有其他方法吗?

0 个答案:

没有答案