1. 问题
-
使用
go mod tidy
存在丢弃的版本go: downloading github.com/josharian/intern v1.0.0
go: finding module for package k8s.io/api/flowcontrol/v1alpha1
go: simple-webhook/types imports
k8s.io/client-go/rest tested by
k8s.io/client-go/rest.test imports
k8s.io/client-go/kubernetes/scheme imports
k8s.io/api/flowcontrol/v1alpha1: module k8s.io/api@latest found (v0.30.2), but does not contain package k8s.io/api/flowcontrol/v1alpha1
-
但是我的代码中并没有导入
k8s.io/api/flowcontrol/v1alpha1
,这个可能存在某个中的依赖项package types
import (
"context""github.com/golang/glog" "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/client-go/dynamic" "k8s.io/client-go/rest"
)
2. 原因
-
检查go.mod文件发现,k8s的api版本和apimachinery同client-go的版本不一致,高于后者
module simple-webhook
go 1.22.3
require (
github.com/golang/glog v1.2.1
k8s.io/api v0.30.2
k8s.io/apimachinery v0.30.2
k8s.io/client-go v0.23.17
) -
推测api的高版本中已经移除了flowcontrol的v1alpha1版本支持
-
v1alpha1 版本的 API 是用于实验和早期访问的,它们可能会在后续的 Kubernetes 版本中被移除或替换为更稳定的版本(如 v1)
修改后重新执行go mod tidy