Kubernetes serviceAccounts 和 SELinux

Kubernetes serviceAccounts and SELinux

我们是 运行 启用了 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 的推荐方法是什么?

谢谢, 安德烈

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

sudo chcon -Rt svirt_sandbox_file_t /var/lib/kubelet

希望对您有所帮助。

它有一个 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"。我开了个bug here.