#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"
)