go - K8s Go 客户端库无法在 go get 上找到包

标签 go kubernetes

我们编写了一些 Go 代码来与我们的 Kubernetes 集群对话并获取暴露的服务的 IP。我们这样做:

(import "gopkg.in/kubernetes/kubernetes.v1/pkg/client/restclient")
(import kubectl "gopkg.in/kubernetes/kubernetes.v1/pkg/client/unversioned")

 svc, err := c.Services(k8sNS).Get(svcName)
 if err != nil {
   panic(l.Errorf("Could not retrieve svc details. %s", err.Error()))
 }
 svcIP := svc.Status.LoadBalancer.Ingress[0].IP

go get 工作正常,我们的脚本在我们执行 go run ... 时执行,大家都很高兴。现在,截至昨天(从发布此问题时起)在同一脚本上 - go get 失败。错误是这样的:

[09.07.2016 10:56 AM]$ go get
package k8s.io/kubernetes/pkg/apis/authentication.k8s.io/install: cannot find package "k8s.io/kubernetes/pkg/apis/authentication.k8s.io/install" in any of:
        /usr/local/go/src/k8s.io/kubernetes/pkg/apis/authentication.k8s.io/install (from $GOROOT)
        /home/ckotha/godir/src/k8s.io/kubernetes/pkg/apis/authentication.k8s.io/install (from $GOPATH)

我们没有在代码中专门使用authentication 包。我们是否正确导入了 kubernetes 库?还有其他方法吗?

ls$GOPATH/k8s.io/kubernetes/pkg/apis/ 上发现了这个:

:~/godir/src/k8s.io/kubernetes/pkg/apis
[09.07.2016 10:53 AM]$ ls
abac  apps  authentication  authorization  autoscaling  batch  certificates  componentconfig  extensions  imagepolicy  OWNERS  policy  rbac  storage

最佳答案

看起来您导入的包发生了变化。

您可以更新现有的存储库:

go get -u

The -u flag instructs get to use the network to update the named packages and their dependencies. By default, get uses the network to check out missing packages but does not use it to look for updates to existing packages.

你确实使用了gopkg.io将版本固定到 v1,但我认为你想要更具体,例如 v1.3.6(编辑:这不起作用,因为 gopkg.in 不允许包选择器比主要版本更具体。)。

或者,确保代码保持不变的一个好方法是编译二进制文件并执行它,而不是使用 go run

关于go - K8s Go 客户端库无法在 go get 上找到包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39376548/

相关文章:

javascript - 在 golang 和 Javascript 中生成相同的 SHA1 UUID

go - 通过结构嵌入实现的接口(interface)

kubernetes - 我可以在 K8s DNS 中添加服务名称别名,就像在 Docker 中链接可以具有别名一样吗?

kubernetes - 在GRPC服务上使用JWT进行Istio最终用户身份验证

json - golang DeepEqual : when the type of value of interface map is array, DeepEqual失效

go - 不是 “selected”的 channel 会怎样?

mysql - spring boot 在应用程序属性中使用占位符

kubernetes - GCE LoadBalancer : Invalid value for field 'namedPorts[0].port' : '0' . 必须大于或等于 1

mongodb - 我可以在 Kubernetes Statefulset 的 volumeClaimTemplate 中使用现有的 GCE 永久磁盘吗

bash - 在 Go 中执行带有参数的命令?