2016-02-11 37 views
0

我們正在運行啓用SELinux的Kubernetes。我們想使用serviceAccounts。按照預期,當我禁用SELinux容器時,可以讀取祕密信息。Kubernetes serviceAccount和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的建議方法是什麼?

感謝, 安德烈

回答

4

你可能需要運行下面的命令在卷目錄設置正確的SELinux。我有一個未解決的問題,以使其在未來自動發生:

sudo chcon -Rt svirt_sandbox_file_t /var/lib/kubelet 

希望有所幫助。

+0

謝謝,這確實做到了: - ) – Andrej

+0

順便說一下,是否有可能以某種方式使用serviceAccounts for(不推薦使用)的靜態POD? – Andrej

+0

您的意思是來自具有完整kubernetes安裝或獨立kubelet的清單文件中的pod? –

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