k8s client-go运行报错解决

k8s client-go报错解决

环境

  • 系统版本:
    k8s@master:~/go/src/shiyu$ cat /etc/os-release 
    NAME="Ubuntu"
    VERSION="18.04.2 LTS (Bionic Beaver)"
    ID=ubuntu
    ID_LIKE=debian
    PRETTY_NAME="Ubuntu 18.04.2 LTS"
    VERSION_ID="18.04"
    HOME_URL="https://www.ubuntu.com/"
    SUPPORT_URL="https://help.ubuntu.com/"
    BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
    PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
    VERSION_CODENAME=bionic
    UBUNTU_CODENAME=bionic
    
  • go version:
    k8s@master:~/go/src$ go version
    go version go1.12.1 linux/amd64
    
  • k8s version
    k8s@master:~/go/src$ kubectl get nodes;
    NAME     STATUS   ROLES    AGE    VERSION
    master   Ready    master   232d   v1.14.0
    
  • client-go(master)

测试代码

```
package main

import (
	"fmt"
	"k8s.io/client-go/kubernetes"
	"k8s.io/client-go/tools/clientcmd"
	"k8s.io/client-go/util/homedir"
	"path/filepath"
	corev1 "k8s.io/api/core/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)



func getPod() *corev1.Pod{
	pod := &corev1.Pod{
		TypeMeta:   metav1.TypeMeta{},
		ObjectMeta: metav1.ObjectMeta{
			Name:                       "test-api",
			GenerateName:               "",
			Namespace:                  "admin",
			Labels:                     nil,
			Annotations:                nil,
		},
		Spec:       corev1.PodSpec{
			Volumes:                       nil,
			InitContainers:                nil,
			Containers:                    []corev1.Container{
				{
					Name:                     "test",
					Image:                    "reg.netlab.com/tensorflow-cpu",
					Command:                  []string{
						"/root/start.sh",
					},
					Args:                     nil,
					WorkingDir:               "",
					Ports:                    nil,
					EnvFrom:                  nil,
					Env:                      nil,
						Resources:                corev1.ResourceRequirements{},
					VolumeMounts:             nil,
					VolumeDevices:            nil,
					LivenessProbe:            nil,
					ReadinessProbe:           nil,
					StartupProbe:             nil,
					Lifecycle:                nil,
				},
			},
			NodeSelector:                  nil,
			ServiceAccountName:            "",
		},
	}
	return pod
}


func main() {
	var kubeconfig string
	if home := homedir.HomeDir();home != "" {
		kubeconfig = filepath.Join(home,".kube","config")
	}
	config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)
	if err != nil {
		fmt.Println(err)
		panic(err)
	}
	clientset, err := kubernetes.NewForConfig(config)
	if err != nil {
		panic(err.Error())
	}
	result, err := clientset.CoreV1().Pods("admin").Create(getPod())
	if err != nil {
		fmt.Println(err)
		panic(err)
	}
	fmt.Println(result.Name)
}
```

报错

# github.com/googleapis/gnostic/extensions
../github.com/googleapis/gnostic/extensions/extension.pb.go:22:11: undefined: proto.ProtoPackageIsVersion3
../github.com/googleapis/gnostic/extensions/extension.pb.go:60:29: undefined: proto.InternalMessageInfo
../github.com/googleapis/gnostic/extensions/extension.pb.go:125:45: undefined: proto.InternalMessageInfo
../github.com/googleapis/gnostic/extensions/extension.pb.go:185:46: undefined: proto.InternalMessageInfo
../github.com/googleapis/gnostic/extensions/extension.pb.go:243:29: undefined: proto.InternalMessageInfo
# k8s.io/client-go/transport
../k8s.io/client-go/transport/round_trippers.go:70:11: cannot convert klog.V(9) (type klog.Verbose) to type bool
../k8s.io/client-go/transport/round_trippers.go:72:11: cannot convert klog.V(8) (type klog.Verbose) to type bool
../k8s.io/client-go/transport/round_trippers.go:74:11: cannot convert klog.V(7) (type klog.Verbose) to type bool
../k8s.io/client-go/transport/round_trippers.go:76:11: cannot convert klog.V(6) (type klog.Verbose) to type bool

解决

原因: 报错的两个包klog、gnostic当前的版本与client-go使用的版本不一致。
暴力解决:

  • klog

    k8s@master:~/go/src$ cd k8s.io/klog/
    k8s@master:~/go/src/k8s.io/klog$ git tag
    v0.1.0
    v0.2.0
    v0.3.0
    v0.3.1
    v0.3.2
    v0.3.3
    v0.4.0
    v1.0.0
    k8s@master:~/go/src/k8s.io/klog$ git branch
    * master
    k8s@master:~/go/src/k8s.io/klog$ git checkout v0.2.0
    注意:正在检出 'v0.2.0'。
    
    您正处于分离头指针状态。您可以查看、做试验性的修改及提交,并且您可以通过另外
    的检出分支操作丢弃在这个状态下所做的任何提交。
    
    如果您想要通过创建分支来保留在此状态下所做的提交,您可以通过在检出命令添加
    参数 -b 来实现(现在或稍后)。例如:
    
      git checkout -b <新分支名>
    
    HEAD 目前位于 71442cd Merge pull request #42 from vincepri/raise-standard-stderr
    k8s@master:~/go/src/k8s.io/klog$ cd ../../
    k8s@master:~/go/src$ ll
    
  • gnostic

    k8s@master:~/go/src/github.com/googleapis/gnostic$ git branch
    * master
    k8s@master:~/go/src/github.com/googleapis/gnostic$ git tag
    swift
    v0.1.0
    v0.2.0
    v0.2.2
    v0.3.0
    v0.3.1
    k8s@master:~/go/src/github.com/googleapis/gnostic$ git checkout v0.2.2
    注意:正在检出 'v0.2.2'。
    
    您正处于分离头指针状态。您可以查看、做试验性的修改及提交,并且您可以通过另外
    的检出分支操作丢弃在这个状态下所做的任何提交。
    
    如果您想要通过创建分支来保留在此状态下所做的提交,您可以通过在检出命令添加
    参数 -b 来实现(现在或稍后)。例如:
    
      git checkout -b <新分支名>
    
    HEAD 目前位于 7c66326 Merge pull request #90 from googleapis/openapi-3.0.1
    
    
发布了31 篇原创文章 · 获赞 16 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Urms_handsomeyu/article/details/103098695