k8s 创建 api token
Kubernetes 新版(v1.22+ 版本之后)因安全原因未自动创建 token,需要手动进行创建
此篇记录新版创建 token 方法(旧版同样适用)
1. 创建 ServiceAccount
yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: apiadmin
namespace: kube-system
apiadmin
为账号名称
2. 创建 ClusterRoleBinding
yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: apiadmin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: apiadmin
namespace: kube-system
apiadmin
为账号名称
3. 创建 Secret
yaml
apiVersion: v1
kind: Secret
metadata:
name: apiadmin-secret
namespace: kube-system
annotations:
kubernetes.io/service-account.name: apiadmin
type: kubernetes.io/service-account-token
apiadmin
为账号名称
重要
- Kubernetes 在 v1.22 版本之前在创建
ServiceAccount
和ClusterRoleBinding
之后会自动创建 token;就不需要手动创建Secret
了(不需要此步骤3) - 在 v1.22+ 版本之后必须手动创建
Secret
,网上大多还是只有前2步骤文档,需要注意
4. 获取 token
bash
kubectl -n kube-system describe secrets/apiadmin-secret
# 或者
kubectl -n kube-system describe secret apiadmin-secret
bash
# 其实本质上一样,因为是自动创建的 token,所以需要先获取 token 的准确名称
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep apiadmin | awk '{print $1}')
- 在输出内容中复制出 token 值即可
apiadmin-secret
为第3步中指定的 Secret 名称