k8s client-go运行报错解决
k8s client-go报错解决环境系统版本:k8s@master:~/go/src/shiyu$ cat /etc/os-releaseNAME="Ubuntu"VERSION="18.04.2 LTS (Bionic Beaver)"ID=ubuntuID_LIKE=debianPRETTY_NAME="Ubuntu 18.04.2 LTS"VERSION_ID="18....
·
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
更多推荐
已为社区贡献11条内容
所有评论(0)