问题描述
- 我想按比例放大状态集,并希望使用以下方法从pod(容器)内部进行按比例放大 kubernetes rest服务器的Kubernetes API(http请求)。
- 我尝试使用 扩展statefulset窗格
PUT / apis / apps / v1 /名称空间/ {namespace} / statefulsets / {name} / scale
- 但这对我不起作用。
甚至尝试使用以下方式获取指定状态集的比例数据:
“获取/ apis / apps / v1 /名称空间/ {namespace} / statefulsets / {name} / scale”
请求:curl -s -k -H“授权:承载$ TOKEN” -X GET https://kubernetes.default.svc:443/apis/apps/v1/namespaces/$Namespace/$Kind/$PodNamePrefix/scale
给出错误:
-
“ message”:“ statefulsets.apps” app-4x“被禁止:用户 “ system:serviceaccount :: default”无法获取资源 命名空间中API组“ apps”中的“ statefulsets / scale” “”“,”原因“:”禁止“,
-
参考:https://v1-14.docs.kubernetes.io/docs/reference/generated/kubernetes-api/v1.14/
有人可以帮我吗?
解决方法
您需要使用Role
和RoleBinding
来定义RBAC,以授权服务帐户执行所需的操作
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: ss-role
rules:
- apiGroups: ["apps"]
resources: ["statefulsets/scale" ]
verbs: ["get","list","create"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
namespace: default
name: ss-rolebinding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: ss-role
subjects:
- kind: ServiceAccount
name: default
namespace: default
在Role
和RoleBinding
之上的假设是,您使用default
命名空间的default
服务帐户来扩展{{1}中的statefulsets
}命名空间。