在Kubernetes中为Pod配置访问权限主要通过以下方式实现:
- ServiceAccount:创建自定义ServiceAccount并绑定到Pod,替代默认账户。
- RBAC授权:
- 定义Role/ClusterRole指定资源操作权限(如get、list、watch)
- 通过RoleBinding/ClusterRoleBinding将角色与ServiceAccount绑定
- Pod配置:在spec中指定serviceAccountName字段关联账户
- 安全上下文:通过securityContext字段限制容器运行时权限(如非root用户)
示例YAML片段:
apiVersion: v1
kind: ServiceAccount
metadata:
name: custom-sa
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: read-pods
subjects:
- kind: ServiceAccount
name: custom-sa
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io