k8s client-go 之 依赖问题解决

k8s client-go 之 依赖问题解决(2)

记一次go mod依赖版本不一致的解决过程

克隆下client-go的工程,并checkout对应kubernetes版本上,可以直接使用example中的例子,但是在自定义开发时遇到了接口不一致问题,很明显这是依赖版本问题所致。

我们使用client-go/examples/create-update-delete-deployment的例子测试

测试环境

➜  k8s go version
go version go1.11.13 darwin/amd64
➜  k8s echo $GO111MODULE
on

测试流程

  1. 将main.go复制到$GOPATH/src/test/k8s下

  2. 在test/k8s中初始化mod,go mod init

    ➜  k8s go mod init
    go: creating new go.mod: module test/k8s
    ➜  k8s ls
    go.mod  main.go
    
  3. 测试go run main.go,mod会自动下载依赖(需要开启代理)

    ➜  k8s go run main.go
    go: finding k8s.io/client-go/kubernetes latest
    go: finding k8s.io/client-go/util/homedir latest
    go: finding k8s.io/client-go/util/retry latest
    go: finding k8s.io/client-go/tools/clientcmd latest
    go: finding k8s.io/api/core latest
    go: finding k8s.io/api/apps latest
    go: finding k8s.io/client-go/util latest
    go: finding k8s.io/client-go/tools latest
    go: finding k8s.io/api latest
    go: finding k8s.io/apimachinery/pkg/apis/meta latest
    go: finding k8s.io/apimachinery/pkg/apis latest
    go: finding k8s.io/apimachinery/pkg latest
    go: finding k8s.io/apimachinery latest
    go: finding golang.org/x/time/rate latest
    go: finding golang.org/x/time latest
    go: finding golang.org/x/oauth2 latest
    go: finding k8s.io/utils/integer latest
    go: finding k8s.io/utils latest
    # k8s.io/client-go/rest
    ../../../pkg/mod/k8s.io/client-go@v11.0.0+incompatible/rest/request.go:598:31: not enough arguments in call to watch.NewStreamWatcher
        have (*versioned.Decoder)
        want (watch.Decoder, watch.Reporter)
    
    

测试结果

第3步,go run main.go 报出接口不一致,再看下载的依赖全是latest的。
之前我们测试client-go时已经切换到tag kubernetes-1.14.6上,而go mod又拉取最先的依赖,这就造成了版本不一致。

解决依赖

查看client-go@kubernetes-1.14.6的go.mod下的依赖

➜  client-go git:(7e43eff7)cat go.mod
module k8s.io/client-go

require 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值