【问题标题】:Kubernetes serviceAccounts and SELinuxKubernetes serviceAccounts 和 SELinux
【发布时间】:2016-02-11 11:33:36
【问题描述】:

我们正在运行启用 SELinux 的 Kubernetes。我们想使用 serviceAccounts。当我禁用 SELinux 时,容器可以按预期读取机密。

但是,当我启用 SELinux 时,我们无法读取容器内的秘密。例如:

localhost$ kubectl exec -it my-pod bash
my-pod$ ls /var/run/secrets/kubernetes.io/serviceaccount/
token
my-pod$ cat /var/run/secrets/kubernetes.io/serviceaccount/token
Permission denied

在 SELinux 中使用 serviceAccounts 的推荐方法是什么?

谢谢, 安德烈

【问题讨论】:

    标签: kubernetes selinux


    【解决方案1】:

    您可能需要运行以下命令才能在卷目录中正确设置 SELinux 上下文。我有一个未解决的问题,希望在未来自动实现:

    sudo chcon -Rt svirt_sandbox_file_t /var/lib/kubelet
    

    希望对您有所帮助。

    【讨论】:

    • 顺便说一句,是否可以以某种方式将 serviceAccounts 用于(已弃用的)静态 POD?
    • 您的意思是清单文件中的 pod 是完整的 kubernetes 安装,还是独立的 kubelet?​​
    • 我们通过在 --config=/path/to/static/pods 的所有节点上启动 kubelet 并将 Pod 规范放在目录中来启动 Kubernetes 静态 Pod。因此静态 Pod 在完整的 Kubernetes 安装中运行。
    • 只是跟进,我想我们将尝试在 fedora/RHEL/CentOS 的 selinux 策略中处理这个问题
    【解决方案2】:

    它有一个 selinux 策略规则(至少在 Fedora 23 中),但不幸的是它有一个错字。

    semanage fcontext -l | grep /var/lib/kub
    /var/lib/kublet(/.*)?                              all files          system_u:object_r:docker_var_lib_t:s0
    

    应该是“kubelet”。我打开了一个错误here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-12
      • 2016-09-13
      • 1970-01-01
      • 2017-10-09
      • 2017-05-31
      • 1970-01-01
      • 2016-03-31
      • 2018-12-02
      相关资源
      最近更新 更多