为Pod配置服务账号
配置服务账号
服务账号(ServiceAccount)为Pod中运行的进程提供身份标识,并映射到Service Account对象。
默认服务账号
如果不手动设置服务账号,默认会分配default
k8s的api服务器将通过服务账号校验策略分配Pod可执行的权限
使用多个服务账号
列举所有sa资源
kubectl get serviceaccounts
![image-20230506112745753](https://img2023.cnblogs.com/blog/1441158/202307/1441158-20230724172200400-61111298.png)
创建一个SA对象:
apiVersion: v1
kind: ServiceAccount
metadata:
name: build-robot
对象命名规则:
- 不能超过 253 个字符
- 只能包含小写字母、数字,以及 '-' 和 '.'
- 必须以字母数字开头
- 必须以字母数字结尾
查询SA的完整信息:
Kubectl get serviceaccounts/sa-name -o yaml
![image-20230506113107529](https://img2023.cnblogs.com/blog/1441158/202307/1441158-20230724172200742-301647348.png)
这里的操作只是创建服务账号,并没有涉及到权限
注意:只能在创建Pod或者新Pod指定模板时才可以设置sa,不能更新
清理:
kubectl delete serviceaccount/build-robot
为SA创建令牌
创建临时令牌
kubectl create token build-robot
可以用这个token登陆dashboard(skooner是第三方的dashboard,单独部署过的)
![image-20230506144055362](https://img2023.cnblogs.com/blog/1441158/202307/1441158-20230724172201045-480624437.png)
最新版本K8s默认token有效时间为1个小时
创建一个长期token
创建一个long-time-token.yaml文件用来定义这个token
![image-20230506144836938](https://img2023.cnblogs.com/blog/1441158/202307/1441158-20230724172201326-1943015201.png)
![image-20230506144939622](https://img2023.cnblogs.com/blog/1441158/202307/1441158-20230724172201553-428993165.png)
查看token内容
![image-20230506145018661](https://img2023.cnblogs.com/blog/1441158/202307/1441158-20230724172201842-697846062.png)
对比一下两种token
短期
{
"aud": [
"https://kubernetes.default.svc.cluster.local"
],
"exp": 1683358831,
"iat": 1683355231,
"iss": "https://kubernetes.default.svc.cluster.local",
"kubernetes.io": {
"namespace": "kube-system",
"serviceaccount": {
"name": "admin",
"uid": "52b8298f-f9ed-4fef-94ab-00407e5ef92d"
}
},
"nbf": 1683355231,
"sub": "system:serviceaccount:kube-system:admin"
}
长期:
{
"iss": "kubernetes/serviceaccount",
"kubernetes.io/serviceaccount/namespace": "kube-system",
"kubernetes.io/serviceaccount/secret.name": "long-time-secret",
"kubernetes.io/serviceaccount/service-account.name": "admin",
"kubernetes.io/serviceaccount/service-account.uid": "52b8298f-f9ed-4fef-94ab-00407e5ef92d",
"sub": "system:serviceaccount:kube-system:admin"
}
短期token中的"exp"为token过期时间,"iat"表示token创建时间
注意:Secret和SA是绑定的,也就是如果删除SA,Secret也会被删除