有旧版本的 Google Cloud Platform 工具:Docker

Chr*_* G. 9 docker google-cloud-platform gcloud google-cloud-sdk kubectl

更新 gcloud 后,我收到此警告,但我该怎么做(我应该删除 Docker)吗?

WARNING:   There are older versions of Google Cloud Platform tools on your system PATH.
  Please remove the following to avoid accidentally invoking these old tools:

  /Applications/Docker.app/Contents/Resources/bin/kubectl
Run Code Online (Sandbox Code Playgroud)

我的 .zshrc 中有这个:

# The next line updates PATH for the Google Cloud SDK.
if [ -f '/Users/<NAME>/google-cloud-sdk/path.zsh.inc' ]; then source '/Users/<NAME>/google-cloud-sdk/path.zsh.inc'; fi

# The next line enables shell command completion for gcloud.
if [ -f '/Users/<NAME>/google-cloud-sdk/completion.zsh.inc' ]; then source '/Users/<NAME>/google-cloud-sdk/completion.zsh.inc'; fi

[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
Run Code Online (Sandbox Code Playgroud)

yno*_*kyy 11

TLDR

/usr/local/bin/kubectl是 Docker 安装的链接:ls -l /usr/local/bin/kubectl=> /usr/local/bin/kubectl -> /Applications/Docker.app/Contents/Resources/bin/kubectl。删除链接没有副作用,解决了冲突:

rm /usr/local/bin/kubectl

理由

冲突与 Docker 提供的版本有关,kubectl因此检查 Docker 文档对此有何看法是有意义的。https://docs.docker.com/docker-for-mac/#kubernetes

提炼:

在 Docker Desktop for Mac 17.12 Edge (mac45) 及更高版本和 18.06 Stable (mac70) 及更高版本中,包含一个独立的 Kubernetes 服务器,可在您的 Mac 上运行,以便您可以测试在 Kubernetes 上部署 Docker 工作负载。

Kubernetes 客户端命令kubectl包括并配置为连接到本地 Kubernetes 服务器。

....

如果您kubectl使用 Homebrew 或其他方法安装并遇到冲突,请删除/usr/local/bin/kubectl.


小智 10

发生这种情况是因为 docker-for-mac 为 kubectl 安装了一个 bin,而 gcloud-sdk 还安装了另一个带有gcloud components install kubectl.

我的建议是从 gcloud 卸载 kubectl 作为组件,覆盖来自 docker-for-mac 的符号链接,并且只使用自制软件安装的 bin。

试试这个命令:

gcloud components remove kubectl

brew install kubernetes-cli

brew link --overwrite kubernetes-cli

  • 在我的 MacOS Mojave 上,当我执行 `which kubectl` 时,它指向来自 google-cloud-sdk 的 *kubectl*。对我来说,警告是无关紧要的,因此可以忽略。 (11认同)