gpt4 book ai didi

kubernetes - 通过API扩展Kubernetes部署

转载 作者:行者123 更新时间:2023-12-02 12:04:10 24 4
gpt4 key购买 nike

我想从POD扩展(上下)部署。换句话说,命名空间中的POD如何发送Kubernetes API调用以扩展部署?

我已经创建了一个角色,并将其分配给具有以下特权的服务帐户,以便发送API调用:

apiVersion: v1
kind: ServiceAccount
metadata:
creationTimestamp: "2019-05-19T18:52:09Z"
name: {name}-sa
namespace: {name}
resourceVersion: "11378025"
selfLink: /api/v1/namespaces/{name}/serviceaccounts/{name}-sa
uid: 34606554-7a67-11e9-8e78-c6f4a9a0006a
secrets:
- name: {name}-sa-token-mgk5z



apiVersion: v1
items:
- apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
creationTimestamp: "2019-05-17T13:21:09Z"
name: {name}-{name}-api-role
namespace: {name}
resourceVersion: "10985868"
selfLink: /apis/rbac.authorization.k8s.io/v1/namespaces/{name}/roles/{name}-{name}-api-role
uid: a298e71a-78a6-11e9-b54a-c6f4a9a00070
rules:
- apiGroups:
- extensions
- apps
resources:
- deployments
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
creationTimestamp: "2019-05-17T13:45:46Z"
name: {name}-{name}-api-rolebind
namespace: {name}
resourceVersion: "11378111"
selfLink: /apis/rbac.authorization.k8s.io/v1/namespaces/{name}/rolebindings/{name}-{name}-api-rolebind
uid: 12812ea7-78aa-11e9-89ae-c6f4a9a00064
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: {name}-{name}-api-role
subjects:
- kind: ServiceAccount
name: {name}-sa
namespace: {name}
kind: List
metadata:
resourceVersion: ""
selfLink: ""

我可以使用以下命令来检索部署,但是找不到如何扩展它。
https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_PORT_443_TCP_PORT/apis/apps/v1/namespaces/{name}/deployments/{name}

我尝试了以下命令以对其进行缩放,但失败了:
curl --cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt -H "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)"  -X PUT  -d '[{ \
"op":"replace", \
"path":"/spec/replicas", \
"value": "2" \
}]'
https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_PORT_443_TCP_PORT/apis/apps/v1/namespaces/{name}/deployments/{name}

{
"kind": "Status",
"apiVersion": "v1",
"metadata": {

},
"status": "Failure",
"message": "deployments.apps \"{name}\" is forbidden: User \"system:serviceaccount:{name}:default\" cannot resource \"deployments\" in API group \"apps\" in the namespace \"{name}\"",
"reason": "Forbidden",
"details": {
"name": "{name}",
"group": "apps",
"kind": "deployments"
},
"code": 403

最佳答案

我终于设法找到了通过Kubernetes API调用从POD扩展部署的方法:
curl -X PATCH --cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt -H "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" \
https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_PORT_443_TCP_PORT/apis/extensions/v1beta1/namespaces/{NAMESPACE}/deployments/{NAME} \
-H 'Content-Type: application/strategic-merge-patch+json' \
-d '{"spec":{"replicas":1}}'

我必须创建一个新的服务帐户并按照开始所述分配角色。

感谢大家的支持。

关于kubernetes - 通过API扩展Kubernetes部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56205304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com