【问题标题】:How does Kubernetes implement Linux capabilities?Kubernetes 是如何实现 Linux 能力的?
【发布时间】:2021-03-27 19:10:24
【问题描述】:

Linux 功能应用于可执行文件。如果我向容器添加功能,这意味着什么? 这是我的容器 securityContext:

securityContext:
  runAsUser: 1008
  capabilities:
    add:
      - NET_ADMIN
      - NET_RAW

但我的任务无法创建原始套接字。那么在打包 docker 镜像时,我应该对可执行文件应用功能吗?

【问题讨论】:

标签: linux kubernetes security-context


【解决方案1】:

正如我在评论部分给你的建议,我将其发布为答案:

从内核 2.2 开始,Linux 已经划分了特权进程 将特权划分为不同的单元,称为能力。这些与众不同的 单位/权限可以独立分配和启用 非特权进程向它们引入 root 特权。 Kubernetes 用户可以使用 Linux 功能将某些权限授予 进程而不给它根用户的所有权限。这是 有助于改善容器与主机的隔离,因为 容器不再需要以 root 身份编写——你可以授予 某些 root 权限,仅此而已。

请参阅:linux-cap-kubernetes

容器部分下的部分代码应如下所示:

securityContext:  
  capabilities:  
    add:
      - NET_ADMIN
      - NET_RAW

要运行某些功能(在您的情况下执行各种与网络相关的操作),您必须以 root 身份运行容器。参见示例:capabilities-securitycontext

阅读更多:linux-capabilities-securityContext

【讨论】:

  • 我的测试结果显示 runAsUser+capabilities 不起作用。但我找不到任何描述。所以我不确定这是否是一个错误
  • 要运行某些功能(在您的情况下执行各种与网络相关的操作),您必须以 root 身份运行容器 - stackoverflow.com/questions/61616892/…。我已经编辑了我的答案,看看吧。
猜你喜欢
  • 2020-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-23
  • 2019-07-27
  • 2010-11-03
相关资源
最近更新 更多