Пользовательский CRD Kubernetes: «Не удалось составить список ...: серверу не удалось найти запрошенный ресурс» - PullRequest
0 голосов
/ 27 октября 2018

Я пытаюсь создать пользовательское определение ресурса kubernetes (с именем Block), но продолжаю нажимать следующую ошибку:

Failed to list *v1alpha1.Block: the server could 
not find the requested resource (get 
blocks.kubechain.com).

Эта проблема возникает из-за вызова List на контроллере дляэто CRD:

indexer, controller := cache.NewIndexerInformer(
        &cache.ListWatch{
            ListFunc: func(lo metav1.ListOptions) (result k8sruntime.Object, err error) {
                return clientSet.Block(ns).List(lo)
            },
            WatchFunc: func(lo metav1.ListOptions) (watch.Interface, error) {
                return clientSet.Block(ns).Watch(lo)
            },
        },
        &v1alpha1.Block{},
        1*time.Minute,
        cache.ResourceEventHandlerFuncs{},
        cache.Indexers{},
    )

Для некоторого контекста здесь есть файл register.go, в котором я регистрирую вышеупомянутое, полученное от разработчика схем:

// GroupName is the api prefix.
const GroupName = "kubechain.com"

// GroupVersion is the version of the api.
const GroupVersion = "v1alpha1"

// SchemeGroupVersion is the group version object.
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: GroupVersion}

var (
    // SchemeBuilder adds the new CRDs Block and Blockchain.
    SchemeBuilder = runtime.NewSchemeBuilder(AddKnownTypes)
    // AddToScheme uses SchemeBuilder to add new CRDs.
    AddToScheme = SchemeBuilder.AddToScheme
)

// AddKnownTypes .
func AddKnownTypes(scheme *runtime.Scheme) error {
    scheme.AddKnownTypes(SchemeGroupVersion,
        &Block{},
        &BlockList{},
    )
    metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
    return nil
}

А вот scheme.goфайл, в котором я на самом деле запускаю AddToScheme из предыдущего файла:

var Scheme = runtime.NewScheme()
var Codecs = serializer.NewCodecFactory(Scheme)
var ParameterCodec = runtime.NewParameterCodec(Scheme)
var localSchemeBuilder = runtime.SchemeBuilder{
    v1alpha1.AddToScheme,
}

var AddToScheme = localSchemeBuilder.AddToScheme

func init() {
    metav1.AddToGroupVersion(Scheme, schema.GroupVersion{Version: "v1"})
    if err := AddToScheme(Scheme); err != nil {
        panic(err)
    }
}

Может кто-нибудь поделиться какой-нибудь информацией о том, что я делаю не так здесь ??

Эта работа следующая это сообщение в блоге.

1 Ответ

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

Я видел похожую ошибку. Это была проблема RBAC. Но сообщение об ошибке вводило в заблуждение.

Если в вашем кластере включен RBAC, убедитесь, что у вашего контроллера есть разрешение get, list для ресурса blocks.kubechain.com.

...