k8s.io/client-go/pkg/api/v1 был на пенсии, как разобрать событие.Объект?

#kubernetes #client-go

#kubernetes #клиент-перейти

Вопрос:

Я смотрю pods и получаю событие из канала ResultChan(), теперь я хочу проанализировать событие.Объект. Я видел фрагмент кода, подобный этому: событие.Объект.(* apiv1.Pod), пожалуйста, посмотрите Приведенный Ниже код, но, к сожалению k8s.io/client-go/pkg/api/v1 если он удален, этот фрагмент кода не работает.

Мой вопрос в том, как получить информацию о Pod из события.Объект? Какой новый API может получить доступ или проанализировать событие.Объект?

 import (
    apiv1 "k8s.io/client-go/pkg/api/v1"
)
    watcher, err := k8sClient.CoreV1().Pods(namespace).Watch(ctx, metav1.ListOptions{
        LabelSelector: labels,
    })

    event := <-watcher.ResultChan():

    pod, ok := event.Object.(*apiv1.Pod)

 

Ответ №1:

Похоже, что с версией 5 действительно произошло изменение API:

Переместил pkg / api и pkg / apis в k8s.io/api . Другие репозитории kubernetes также импортируют типы оттуда, поэтому они могут быть скомпонованы с помощью client-go.

Так что нет, вместо k8s.io/client-go/pkg/api/v1 того, чтобы вы можете использовать k8s.io/api/core/v1 :

 import ( 
    corev1  "http://k8s.io/api/core/v1"  
    "k8s.io/apimachinery/pkg/api/errors"
    metav1  "k8s.io/apimachinery/pkg/apis/meta/v1"
    "k8s.io/client-go/kubernetes"  
    "k8s.io/client-go/tools/clientcmd"
)