kubernetes 是否在其客户端库中提供 API 来获取集群信息转储? 我浏览了它的 API documentation并且可以找到任何可以实际执行此操作的 API。
我现在做什么:
kubectl cluster-info dump --output-directory="dumpdir"
我想要什么:
使用 client-go/kubernetes API 库,进行 API 调用以从 golang 应用程序获取此转储。可能吗?
我所知道的:
每个资源都有单独的 API,可以提供集群信息转储提供的所有信息,但我想通过单个 API 调用来完成。
例如,这段 Golang 代码会给我一个节点列表:
coreClient := kubernetesapi.CoreV1()
nodeList, err := coreClient.Nodes().List(metav1.ListOptions{})
是否有一个 API 可以返回 kubectl cluster-info dump
给出的内容,以便我可以通过编程方式获取所有详细信息?
最佳答案
您可以通过在 kubectl cluster-info
中使用详细选项列出输出来捕获 API 调用命令:
kubectl cluster-info dump -v 9
例如:
curl -k -v -XGET -H "Accept: application/json, /" -H "User-Agent: kubectl/v1.12.1 (linux/amd64) kubernetes/4ed3216" 'https://10.142.0.3:6443/api/v1/namespaces/kube-system/events'
在您的集群中获取用于授权目的的 token :
MY_TOKEN="$(kubectl get secret <default-secret> -o jsonpath='{$.data.token}' | base64 -d)"
现在您可以对目标资源进行 API 调用:
curl -k -v -H "Authorization : Bearer $MY_TOKEN" https://10.142.0.3:6443/api/v1/namespaces/kube-system/events
请记住,您可能需要角色绑定(bind)才能为您的服务帐户授予查看权限:
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: default-view
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: view
subjects:
- kind: ServiceAccount
name: default
namespace: default
关于go - 我们如何使用 kubernetes API 获取 kubernetes 集群信息转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52963194/