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

时间:2016-09-07 18:04:29

标签: 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

1 个答案:

答案 0 :(得分:1)

看起来您导入的包已更改。

您可以更新现有存储库:

go get -u
  

-u标志指示get使用网络更新named   包及其依赖项。默认情况下,get使用网络   检查丢失的包但不使用它来查找更新   现有的包裹。

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

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