kubernetes是否在其客户端库中提供API以获取集群信息转储。 我遍历了它的API documentation,可以找到实际上可以做到这一点的任何api。
我现在要做什么: kubectl集群信息转储--output-directory =“ dumpdir”
我想要什么: 使用client-go / kubernetes api库,进行API调用以从golang应用程序获取此转储。有可能吗?
我所知道的: 每个资源都有单独的API,可以提供cluster-info转储提供的所有信息,但是我想通过一个API调用。
例如: golang代码:
coreClient := kubernetesapi.CoreV1()
nodeList, err := coreClient.Nodes().List(metav1.ListOptions{})
这将给我一个节点列表。
是否有一个API,该API返回“ kubectl cluster-info dump”将给出的内容。这样我就可以以编程方式获取所有详细信息。
答案 0 :(得分:0)
备份和还原群集资源:
https://medium.com/@marekbartik/kubernetes-in-production-snapshotting-cluster-state-41bd767ef14
使用方舟进行群集备份和保留:
ark schedule create <SCHEDULE NAME> --schedule "0 7 * * *"
ark restore create --from-backup <BACKUP-NAME>
答案 1 :(得分:0)
您可以通过在kubectl cluster-info
命令中使用详细选项列出输出来捕获API调用:
kubectl cluster-info dump -v 9
例如:
curl -k -v -XGET -H“接受:application / json, / ” -H“用户代理: kubectl / v1.12.1(linux / amd64)kubernetes / 4ed3216“ 'https://10.142.0.3:6443/api/v1/namespaces/kube-system/events'
获取集群中用于授权目的的令牌:
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
请记住,您可能需要角色绑定才能为您的服务帐户授予查看权限:
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
答案 2 :(得分:0)
恐怕这不是这样做的API。 kubectl cluster-info dump
也基于k8s sdk实现。
但是您可以参考实现并根据自己的需要进行定制。