如何解决通过go mod导入K8s Taints Api时发生错误
我想使用api向(从)k8s节点添加(删除)异味,如下所示:
import (
taints "k8s.io/kubernetes/pkg/util/taints"
)
newNode,updated,err := taints.AddOrUpdateTaint(node,taint)
newNode,removed,err := taints.RemoveTaint(node,taint)
但是当我通过GoLand同步依赖项时,发生了错误:
go:查找软件包k8s.io/kubernetes/pkg/util/taints的模块
前往:在k8s.io/kubernetes v1.19.0中找到k8s.io/kubernetes/pkg/util/taints
转到:k8s.io/kubernetes@v1.19.0需要
k8s.io/api@v0.0.0:在版本v0.0.0上读取k8s.io/api/go.mod:未知版本v0.0.0
go.mod
在我的项目中是这样的:
go 1.14
require (
github.com/gammazero/workerpool v1.0.0
github.com/glc v0.0.0-00010101000000-000000000000
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b
github.com/mediocregopher/radix.v2 v0.0.0-20181115013041-b67df6e626f9
github.com/robfig/cron v1.2.0
github.com/spf13/pflag v1.0.5
gopkg.in/yaml.v2 v2.3.0
k8s.io/api v0.19.0
k8s.io/apiextensions-apiserver v0.19.0
k8s.io/apimachinery v0.19.0
k8s.io/client-go v0.19.0
k8s.io/metrics v0.19.0
sigs.k8s.io/controller-runtime v0.6.2
)
我发现了有关此错误的一些问题,但它似乎对我不起作用。(https://github.com/kubernetes/kubernetes/issues/79384)
希望有人能帮忙,谢谢〜
解决方法
您可以使用上述问题中建议的script:
#!/bin/sh
set -euo pipefail
VERSION=${1#"v"}
if [ -z "$VERSION" ]; then
echo "Must specify version!"
exit 1
fi
MODS=($(
curl -sS https://raw.githubusercontent.com/kubernetes/kubernetes/v${VERSION}/go.mod |
sed -n 's|.*k8s.io/\(.*\) => ./staging/src/k8s.io/.*|k8s.io/\1|p'
))
for MOD in "${MODS[@]}"; do
V=$(
go mod download -json "${MOD}@kubernetes-${VERSION}" |
sed -n 's|.*"Version": "\(.*\)".*|\1|p'
)
go mod edit "-replace=${MOD}=${MOD}@${V}"
done
go get "k8s.io/kubernetes@v${VERSION}"
将此文件另存为upgrade-k8s.sh
,与go.mod
在同一目录中,并按照sh upgrade-k8s.sh 1.19.0
的方式运行。然后,提交对go.mod
文件所做的所有更改。现在,您可以删除upgrade-k8s.sh
或保留以供k8s.io/kubernetes
模块将来升级。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。