使用 Kubernetes API 管理 Statefulsets 的扩展
Manage scaling of Statefulsets using Kubernetes API
- 我想扩展我的有状态集,并想从 pod(容器)内部使用
Kubernetes API(http 请求)到 kubernetes rest 服务器。
- 我尝试使用
扩展有状态集pods
PUT /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/scale
- 但它对我不起作用。
甚至尝试使用
获取指定statefulset的比例数据
"GET /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/scale"
REQUEST : curl -s -k -H "Authorization: Bearer $TOKEN" -X GET https://kubernetes.default.svc:443/apis/apps/v1/namespaces/$Namespace/$Kind/$PodNamePrefix/scale
报错:
“消息”:“statefulsets.apps“app-4x”被禁止:用户
“system:serviceaccount::default”无法获取资源
API 中的“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
服务帐户在 [=] 中扩展 statefulsets
15=] 命名空间。
- 我想扩展我的有状态集,并想从 pod(容器)内部使用 Kubernetes API(http 请求)到 kubernetes rest 服务器。
- 我尝试使用 扩展有状态集pods
PUT /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/scale
- 但它对我不起作用。
甚至尝试使用
获取指定statefulset的比例数据"GET /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/scale"
REQUEST : curl -s -k -H "Authorization: Bearer $TOKEN" -X GET https://kubernetes.default.svc:443/apis/apps/v1/namespaces/$Namespace/$Kind/$PodNamePrefix/scale
报错:
“消息”:“statefulsets.apps“app-4x”被禁止:用户 “system:serviceaccount::default”无法获取资源 API 中的“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
服务帐户在 [=] 中扩展 statefulsets
15=] 命名空间。