Процессор / объем памяти не заполнен в core.v1.Pod.PodSpec - PullRequest
0 голосов
/ 07 июня 2018

Используя следующий код:

func GetPods(clientset *kubernetes.Clientset, name, namespace string) ([]corev1.Pod, error) {
    list, err := clientset.CoreV1().Pods(namespace).List(metav1.ListOptions{
        LabelSelector: fmt.Sprintf("app=%s", name),
    })
    if err != nil {
        return nil, err
    }
return list.Items, nil
}

И затем выведите результаты в yaml, используя gopkg.in/yaml.v2, и вот предложение yaml, описывающее ресурс контейнера:

resources:
  limits:
    cpu:
      format: DecimalSI
    memory:
      format: BinarySI
  requests:
    cpu:
      format: DecimalSI
    memory:
      format: BinarySI

, которое включаетни один из фактического количества ресурса, который меня на самом деле интересует, который должен выглядеть следующим образом, используя kubectl get pod xxx -o yaml:

resources:
  limits:
    cpu: "4"
    memory: 8Gi
  requests:
    cpu: 200m
    memory: 100Mi

Так, как я могу правильно получить yaml спецификации pod, который включает в себя всю информацию о ресурсе, используя библиотеку Голанга?Что я сделал не так в вышеописанном процессе?

Обновление

Я заметил Pod.String и Pod.Marshal методы.

Вывод pod.String() выглядит как отформатированная строка экземпляра core.v1.Pod, мне это не очень полезно, поскольку он не сериализован.

Pod.Marshal() дает байтовый массив, содержит многотарабарщины при печати.Сам метод является одним из тех недокументированных методов внутри k8s.io/api/core/v1/generated.pb.go, я действительно не знаю, что делать с его выводом:

func (p *PodResolver) SpecYaml() (string, error) {
    bs, err := p.pod.Marshal()
    fmt.Println(string(bs))
    return string(bs), err
}
// prints a whole lot of gibberish like cpu\x12\x03\n\x014\n\x0f\n\x06memory\x12\x05\n\x038Gi\x12\r\n\x03cpu\x12\x06\n\x04200m\x12\x11\n\x06memory\x12\a\n\x05100MiJ-\n\n

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

Таким образом, вместо использования yaml.Marshal, я должен использовать json.Marshal, который даст мне всю информацию, включая процессор и количество памяти.

Как уже упоминалось @ user2326871, в структуре количества отсутствуют теги yaml.

Что за странная библиотека и все ее странные методы, я был настолько уверен, что kubectl должен использовать одну и ту же структуру Pod для генерации всех своих выходных данных yaml.

0 голосов
/ 07 июня 2018

Вы можете просто вызвать метод String () для полей количества, который будет возвращать что-то вроде «100 м»

Кажется, нет никаких тегов yaml для типа Quantity.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...