docker Google Cloud Platform工具有较旧的版本:多克

41ik7eoe  于 2022-11-28  发布在  Docker
关注(0)|答案(5)|浏览(197)

更新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

我在我的.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
qoefvg9y

qoefvg9y1#

这是因为docker-for-mac为kubectl安装了一个bin,而gcloud-sdk也为gcloud components install kubectl安装了另一个bin。
我的建议是从gcloud中卸载kubectl作为组件,覆盖docker-for-mac中的符号链接,并且只使用homebrew安装的bin。
请尝试以下命令:
gcloud components remove kubectl
brew install kubernetes-cli
brew link --overwrite kubernetes-cli

kyxcudwk

kyxcudwk2#

顶级域名注册商

/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/desktop/kubernetes/#use-the-kubectl-command
摘录:
如果您使用Homebrew或其他方法安装了kubectl,并且遇到冲突,请删除/usr/local/bin/kubectl。

vybvopom

vybvopom3#

下面是我的例子,你可以参考。运行gcloud components update后,我得到了这个警告:
警告:您的系统路径中存在旧版本的Google Cloud Platform工具。请删除以下内容以避免意外调用这些旧工具:
/usr/local/储存格/kubernetes-cli/1.10.2/bin/kubectl
我使用brew list检查此工具

☁  issue [master] brew list
coreutils       gdbm            git-lfs         icu4c           kops            kubectx         libpng          mtr             openssl         python@2        sqlite          tree            wxmac
erlang          geoip           git-redate      jpeg            kube-ps1        kubernetes-cli  libtiff         node            pcre            readline        telnet          watchman

在阅读了文档后,我决定卸载kubernetes-cli及其依赖项kopskube-ps1kubectx以避免冲突。

☁  issue [master] brew uninstall kops kube-ps1 kubectx
Uninstalling /usr/local/Cellar/kops/1.9.0... (5 files, 129.8MB)
Uninstalling /usr/local/Cellar/kube-ps1/0.6.0... (6 files, 29.0KB)
Uninstalling /usr/local/Cellar/kubectx/0.5.0... (12 files, 27.8KB)
☁  issue [master] brew uninstall kubernetes-cli
Uninstalling /usr/local/Cellar/kubernetes-cli/1.10.2... (178 files, 52.8MB)
☁  issue [master] gcloud components update

All components are up to date.

这个警告消失了。

bbuxkriu

bbuxkriu4#

我只是进入了Docker文件的bin文件夹,把kubectl移到了垃圾桶里。

ftf50wuq

ftf50wuq5#

执行echo $PATH并检查哪个文件夹优先。在我的例子中,它类似于.../Users/myname/google-cloud-sdk/bin:/usr/local/bin:/usr/bin:...。在这里,gcloud中的kubectl实际上在Docker Desktop中的kubectl之前(在/usr/local/bin/kubectl中),所以没有问题。如果这也是你的例子,你不需要做任何事情。
当然,如果你想完全消除混乱,你可以只删除链接/usr/local/bin/kubectl -> /Applications/Docker.app/Contents/Resources/bin/kubectl,或重命名它。

更新日期:

在最近的docker桌面版本中,他们实际上提供了另一个链接/usr/local/bin/kubectl.docker -> /Applications/Docker.app/Contents/Resources/bin/kubectl,以区别于其他kubectl,所以简单地删除链接/usr/local/bin/kubectl -> /Applications/Docker.app/Contents/Resources/bin/kubectl并不是一个坏主意。

相关问题