我们在启用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的推荐方法是什么?
谢谢, 安德烈
答案 0 :(得分:4)
您可能需要运行以下命令才能在volumes目录中正确设置SELinux上下文。我有一个未解决的问题,以便将来自动实现这一目标:
sudo chcon -Rt svirt_sandbox_file_t /var/lib/kubelet
希望有所帮助。
答案 1 :(得分: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。