2016-09-07 1 views
2

우리는 Kubernetes 클러스터와 통신하고 노출 된 서비스의 IP를 가져 오는 Go 코드를 작성했습니다.K8s Go 클라이언트 라이브러리가 패키지를 찾지 못했습니다.

(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이 실패합니다. 이 오류는 그래서 같다 : 우리는 특별히 우리의 코드에 authentication 패키지를 사용하지 않은

[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) 

. kubernetes 라이브러리를 올바르게 가져오고 있습니까? 이것을 할 또 다른 방법이 있습니까?

$GOPATH/k8s.io/kubernetes/pkg/apis/ls이 발견

:~/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

그것은 당신이 변경되었습니다 수입 패키지 모양을.

당신은 기존 저장소를 업데이트 할 수 있습니다

go get -u 

-u 플래그가 지정된 패키지와 의존성을 업데이트하기 위해 네트워크를 사용할 수 지시합니다. 기본적으로 get은 네트워크를 사용하여 누락 된 패키지를 체크 아웃하지만이 패키지를 사용하여 기존 패키지의 업데이트를 찾습니다.

당신은 v1로 버전을 핀 gopkg.io을 사용합니까,하지만 난 당신이, 더 구체적인 예를 들면, v1.3.6 (편집되고 싶은 생각 : gopkg.in 패키지 선택기를 허용하지 않기 때문에이 작동하지 않습니다 주요 버전보다 구체적입니다.).

또는 코드가 동일하게 유지되도록하는 좋은 방법은 go run 대신에 바이너리를 컴파일하고 실행하는 것입니다.

+0

감사합니다. 나는 일찍 그것을 헛되이 시도했다. 모든 k8s.io/ 디렉토리 구조를 삭제하여 스크립트를 실행했지만 여전히 실패했습니다. 어떤 의존성은'authentication/install' 대신'authentication.k8s.io/install'을 참조하고 있습니다. – chetan

관련 문제