Как взять дамп информации о кластере kubernetes с помощью API kubernetes? - PullRequest
0 голосов
/ 24 октября 2018

Предоставляет ли kubernetes API в своей клиентской библиотеке для получения дампа информации о кластере.Я просмотрел его API документацию и смог найти любой API, который действительно мог бы это сделать.

Что я делаю сейчас: kubectl cluster-info dump --output-directory = "dumpdir"

Что я хочу: Используя API-библиотеки client-go / kubernetes, сделайте вызов API, чтобы получитьэтот дамп из приложения golang.Возможно ли это?

Что я знаю: для каждого ресурса существуют отдельные API, которые могут предоставить всю информацию, предоставленную дампом информации о кластере, но я хочу сделать это одним вызовом API.

Например: код golang:

coreClient := kubernetesapi.CoreV1()
nodeList, err := coreClient.Nodes().List(metav1.ListOptions{})

Это даст мне список узлов.

Есть ли API, который возвращает то, что выдаст "kubectl cluster-info dump".Так что я могу получить все детали программно.

Ответы [ 3 ]

0 голосов
/ 24 октября 2018

Вы можете перехватить вызовы API, перечислив выходные данные с подробной опцией в команде kubectl cluster-info:

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
0 голосов
/ 24 октября 2018

Боюсь, это не такой API для этого.kubectl cluster-info dump также реализован на основе k8s sdk.

Но вы можете ссылаться на реализацию и настраивать ее в соответствии со своими потребностями.

https://github.com/kubernetes/kubernetes/blob/6fc89ae92d9d09bd70e74d32c6ba6b3d28e7bec7/pkg/kubectl/cmd/clusterinfo/clusterinfo_dump.go

0 голосов
/ 24 октября 2018

Резервное копирование и восстановление ресурсов кластера:

https://medium.com/@marekbartik/kubernetes-in-production-snapshotting-cluster-state-41bd767ef14

Использование ark для резервного копирования и восстановления кластера:

ark schedule create <SCHEDULE NAME> --schedule "0 7 * * *"

ark restore create --from-backup <BACKUP-NAME>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...