考点精讲
- Kubernetes 里有两类账号:UserAccount 面向「人」,由集群外部的身份系统(证书、OIDC 等)管理,在集群内没有对应的资源对象;ServiceAccount 面向「Pod/应用」,是命名空间级的集群内身份。每个 Pod 默认会挂载所在命名空间的 default ServiceAccount,其对应的 token 用于访问 API 时做认证。给 Pod 赋权,就是创建(或选用)ServiceAccount,再通过 RoleBinding/ClusterRoleBinding 把它绑定到相应角色上。记住「UserAccount 给人用、ServiceAccount 给 Pod 用」,并养成最小权限的习惯——不要默认给 Pod 过大的权限。
记忆技巧
UserAccount 给人用,ServiceAccount 给 Pod 用
SA 是 Pod 的身份证
SA 是 Pod 的身份证
常见误区
真题思路
- 【示例】本页题目为教学模拟题,非真题,仅用于讲解答题思路 让 Pod 以最小权限访问 API,正确的做法是?
一直用 default ServiceAccount 创建专用 ServiceAccount 并绑定最小权限角色 给所有 Pod 绑定 ClusterRole 禁用认证
答案:B
解析:最佳实践是创建专用 ServiceAccount 并绑定最小权限角色;用 default 或全局 ClusterRole 权限过大,禁用认证不可行。
常见问题
Q:ServiceAccount 和 UserAccount 区别
A:ServiceAccount 是集群内对象、给 Pod/应用用;UserAccount 由外部身份系统管理、给人用。
Q:能用 kubectl create 创建 UserAccount 吗
A:不能,UserAccount 没有集群内对象,只有 ServiceAccount 可用 kubectl 创建。
Q:Pod 默认用哪个 ServiceAccount
A:所在命名空间的 default ServiceAccount。
相关知识
教材出处:第13章 Kubernetes集群安全 用户账号与服务账号、角色绑定