go - 我们如何使用 kubernetes API 获取 kubernetes 集群信息转储

标签 go kubernetes

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/

相关文章:

json - 如何严格解码固定长度数组?

linux - 具有多个外部 IP 的 Kube-Proxy

multithreading - Kubernetes中的Millicores多线程

java - 优雅地关闭在 Kubernetes 中运行的 Spring 应用程序

windows - Windows 中 Kubernetes .yaml 中 PersistentVolume 的路径

python - Keycloak KubeAPI 认证失败

database - 我应该在哪里存储全局数据库实例?

python - Go 真的能比 Python 快那么多吗?

json - 我的结构没有编码为 json

go - 如何创建 docker 镜像然后将其上传到我的存储库?