1.创建 ClusterRole
您需要创建一个 ClusterRole,以授予 Service Account 在集群范围内的权限
# cluster-role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
保存文件后,执行kubectl create -f cluster-role.yaml
2. 创建 ClusterRoleBinding
# cluster-role-binding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: pod-reader-binding
subjects:
- kind: ServiceAccount
name: my-service-account
namespace: default
roleRef:
kind: ClusterRole
name: pod-reader
apiGroup: rbac.authorization.k8s.io
保存文件后,执行kubectl create -f cluster-role-binding.yaml
3、生成token
k8s1.24及以上版本使用kubectl create token my-service-account生成token
之前的k8s版本需要生成sa,自动创建secret,secret里带token
# 获取 Token TOKEN=$(kubectl create token my-service-account)
# 发送请求 curl -k -H "Authorization: Bearer $TOKEN" https://<k8s-api-server-ip>:6443/api/v1/pods
4、来用ab检查下apiserver的请求吧,可以算出集群请求的qps限制
ab -n 1000 -c 40 -k -H "Authorization: Bearer 生成的token" -H "Accept: application/json" https://1.1.1.16443/api/v1/pods