我希望我的程序使用特定版本的client-go,以便它与目标集群兼容。但是以下语法:import ( "log" "os" "path/filepath" clientcmd "k8s.io/client-go@kubernetes-1.12.10/tools/clientcmd")我用它来构建我的客户端配置,如下所示: config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)失败并显示此错误消息:▶ go run main.gopackage main imports k8s.io/client-go@kubernetes-1.12.10/tools/clientcmd: 只能使用 path@version 语法和 'go get'我应该如何陈述特定的版本化输入?
1 回答
开满天机
TA贡献1786条经验 获得超13个赞
将您的导入更改为
import "k8s.io/client-go/tools/clientcmd"
并执行命令:
go get k8s.io/client-go@kubernetes-1.12.10
使用的版本记录在go.mod文件中。以上go get内容将go.mod根据给定的版本进行更改。请注意,您也可以go.mod手动编辑(但最好将其留给 go 工具)。如果您使用的版本为开头或更高版本,则只需修改导入路径v2,在这种情况下,主要版本必须是后缀,例如
import "k8s.io/client-go/tools/clientcmd/v2"
笔记:
在上述go get命令之后,go.mod文件将被修改为包含require如下指令:
k8s.io/client-go v0.0.0-20190708094436-77c08c6b86df // indirect
这样做的原因是因为 go 模块需要语义版本控制,而 kubernetes-1.12.10不是 semver2 兼容的版本号。尽管如此,go 工具仍会确定此版本标记了77c08c6b86df0af19f718d9a57620c4e9b811d48commitgo.mod ,并在文件中使用它。
- 1 回答
- 0 关注
- 95 浏览
添加回答
举报
0/150
提交
取消