Kubeadm: [警告 FileExisting-crictl]:在系统路径中找不到 crictl

创建于 2017-12-25  ·  22评论  ·  资料来源: kubernetes/kubeadm

kube 版本:1.9.0

如何解决这个飞行前检查,这个警告是什么意思?

triaged

最有用的评论

如果 kubeadm 想要这个 cli 工具,它应该在不存在时安装它而不是警告。 我怀疑极少数用户会预先安装 crictl!

所有22条评论

这只是一个警告,而不是错误。 没有它,您应该可以正常进行。
如果您想摆脱警告,只需安装https://github.com/kubernetes-incubator/cri-tools/tree/master/cmd/crictl

谢谢你,有一个美好的一天!

@luxas 非常感谢!

我已经安装了它,通过“go get”方法和直接将它放在我的 PATH 中。 警告仍在出现。 是否有某些原因导致它找不到它?

我将在警告中添加面包屑。

go get github.com/kubernetes-incubator/cri-tools/cmd/crictl解决

@查克哈

如果 kubeadm 想要这个 cli 工具,它应该在不存在时安装它而不是警告。 我怀疑极少数用户会预先安装 crictl!

我们是否在官方的 deb/rpm 包中crictl

@errordeveloper不,但我们可以。

为什么在https://kubernetes.io/docs/setup/independent/install-kubeadm 中没有提到这一点? ?

应该包括一些我必须做的事情:
安装这个 go 东西,这样你就可以构建 kubeadm 需要的其他东西:

百胜安装去

更新它,因为不需要更多的谷歌搜索就没有任何效果,所以安装的版本当然太旧了:

rpm --import https://mirror.go-repo.io/centos/RPM-GPG-KEY-GO-REPO
curl -s https://mirror.go-repo.io/centos/go-repo.repo | 三通 /etc/yum.repos.d/go-repo.repo
vi /etc/yum.repos.d/go-repo.repo

将“$releasever”替换为“7”,将“$basearch”替换为“x86_64”,因为,呃,这些变量不会存在。

百胜更新golang

构建事物:

去 github.com/kubernetes-incubator/cri-tools/cmd/crictl

现在尝试 kubeadm init 并处理其他未记录的错误。

同样在 Ubuntu 16.4 上 .. 有使用“go get ...”的有用建议,但这需要

sudo apt-get install golang-go

然后你运行 go-get 命令,然后它出错,因为 GOPATH 没有设置,我修复了它,但是它抱怨因为我使用了相对路径,我修复了它,但是它抱怨因为

包上下文:无法识别的导入路径“上下文”(导入路径不以主机名开头)

原来是因为您可以使用 apt-get 安装的最新版本的 golang 是 1.6,而上下文修复是 1.7 及更高版本.. 这需要使用此处的友好说明进行完整的清除和重新安装。 这很好,即使他们把环境变量设置错了..(叹气)..然后我意识到 1.7 真的很古老,所以我回到这里的官方说明..虽然我仍然很高兴我有 wget从第一个有用的位置下载 tarball 的说明.. 我对此进行了修改

wget https://storage.googleapis.com/golang/go1.10.1.linux-amd64.tar.gz

以防万一其他人偶然发现这个......

我知道这听起来像我在抱怨(因为我是因为我有点恼火)..但我认为值得指出的是,它不像只是添加一条运行指令那么简单

去 github.com/kubernetes-incubator/cri-tools/cmd/crictl

并相信它会轻松解决问题……这种东西可能不应该推给最终用户。

提供我遇到此警告的内容:

kubeadm 版本:&version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.2", GitCommit:"81753b10df112992bf51bbc2c2f85208aad78335", GitTreeState:"clean", BuildDate:"2018-04-27T09:10: 24Z”,GoVersion:“go1.9.3”,编译器:“gc”,平台:“linux/amd64”}

  1. --ignore-preflight-errors 无法缓解此警告,我尝试了各种格式:
    --ignore-preflight-errors="cri" 或 --ignore-preflight-errors=cri 或
    --ignore-preflight-errors "cri" 或 --ignore-preflight-errors cri

  2. 安装软件包也无法缓解此警告

    去 github.com/kubernetes-incubator/cri-tools/cmd/crictl

    将在 $HOME/go/bin 中安装二进制文件,并将其添加到 $PATH
    我以普通用户和根用户的身份安装了二进制文件(所以它出现在两个主目录中)。
    仍然 kubeadm 报告警告并且找不到它。

@heyi-arm --ignore-preflight-errors会将错误转换为警告,但仍会显示警告。

只是在这里插话,我在尝试使用 Ansible 配置多主机设置时遇到了这个问题。

TASK [ansible-k8s : join_cluster | Joining Additional Nodes To K8s Cluster] ******************************************************************************************************
fatal: [node1]: FAILED! => {"changed": true, "cmd": ["kubeadm", "join", "--token", "8gsm4e.uv0bve5j7ec2i0qk", "--discovery-token-unsafe-skip-ca-verification", "--ignore-preflight-errors", "192.168.250.10:6443"], "delta": "0:00:00.176311", "end": "2018-05-10 19:57:28.117885", "msg": "non-zero return code", "rc": 2, "start": "2018-05-10 19:57:27.941574", "stderr": "\t[WARNING FileExisting-crictl]: crictl not found in system path\nSuggestion: go get github.com/kubernetes-incubator/cri-tools/cmd/crictl\n[preflight] Some fatal errors occurred:\n\t[ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists\n[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`", "stderr_lines": ["\t[WARNING FileExisting-crictl]: crictl not found in system path", "Suggestion: go get github.com/kubernetes-incubator/cri-tools/cmd/crictl", "[preflight] Some fatal errors occurred:", "\t[ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists", "[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`"], "stdout": "[preflight] Running pre-flight checks.", "stdout_lines": ["[preflight] Running pre-flight checks."]}
fatal: [node2]: FAILED! => {"changed": true, "cmd": ["kubeadm", "join", "--token", "8gsm4e.uv0bve5j7ec2i0qk", "--discovery-token-unsafe-skip-ca-verification", "--ignore-preflight-errors", "192.168.250.10:6443"], "delta": "0:00:00.183138", "end": "2018-05-10 19:57:28.171885", "msg": "non-zero return code", "rc": 2, "start": "2018-05-10 19:57:27.988747", "stderr": "\t[WARNING FileExisting-crictl]: crictl not found in system path\nSuggestion: go get github.com/kubernetes-incubator/cri-tools/cmd/crictl\n[preflight] Some fatal errors occurred:\n\t[ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists\n[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`", "stderr_lines": ["\t[WARNING FileExisting-crictl]: crictl not found in system path", "Suggestion: go get github.com/kubernetes-incubator/cri-tools/cmd/crictl", "[preflight] Some fatal errors occurred:", "\t[ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists", "[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`"], "stdout": "[preflight] Running pre-flight checks.", "stdout_lines": ["[preflight] Running pre-flight checks."]}

@mrlesmithjr你有另一个问题,不相关: [ERROR FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt already exists 。 请检查您的 ansible playbook,并在需要时打开包含详细信息的新问题。

那是我从主人那里复制 PKI 文件夹的地方。 还在努力整理一切。 但肯定会的。

这是很好的反馈。 我将在 sig-cluster-lifecycle 中提出它。 这至少应该是绝对可以忽略的。

如果 kubeadm 依赖它,它应该是 .deb 分发的。 如果不是,那么它只是一些可选的实用程序 - 应该仍然打包。

如果安装时需要这样做,那么它需要与软件包一起提供。 Go 构建工具不属于生产容器主机。

在我看来,除非用户想使用 CRI 而不是 docker,否则它不应该是必需的。 它可以通过引入新的命令行选项 (--use-cri ?) 显式完成,也可以在用户使用 --cri-socket 选项指定 CRI 套接字时像在此 PR中一样隐式完成。

@luxas对我来说这是一个错误。 这是一个错误吗? 如果是,那么它应该尽快修复,因为如上所示,在某些配置上安装 crictl 并不是那么容易(并且需要生产主机上的 go build 工具)。

我认为这应该由这个 PR解决

此页面是否有帮助?
0 / 5 - 0 等级