我有Kubernetes在两个不同的环境中工作得很好,即在我的本地环境(MacBook运行minikube)和谷歌的容器引擎(GCE, Kubernetes在谷歌云上)。我使用MacBook/local环境来开发和测试我的YAML文件,然后,完成后,在GCE上尝试它们。

目前我需要单独使用每个环境:我需要在我的本地环境中编辑YAML文件,当准备就绪时,(git)将它们克隆到GCE环境中,然后使用/部署它们。这是一个有点麻烦的过程。

理想情况下,我想从我的Macbook使用kubectl来轻松地在本地minikube或GCE Kubernetes环境之间切换,并轻松地确定在哪里使用YAML文件。有没有一种简单的方法来切换上下文来做到这一点?


当前回答

上下文列表

kubectl config get-contexts

上下文切换

kubectl config set current-context MY-CONTEXT

其他回答

我厌倦了一遍又一遍地输入这个,所以我写了一个简单的bash实用程序来切换上下文

你可以在这里找到它https://github.com/josefkorbel/kube-switch

了解所有的背景

C:\Users\arun>kubectl config get-contexts

获取当前上下文

C:\Users\arun>kubectl config current-context

切换上下文

C:\Users\arun>kubectl config use-context <any context name from above list>

标准kubectl命令的快捷方式是使用kubectx:

列表上下文:kubectx 等价于kubectl config get-contexts 切换上下文(到foo): kubectx foo 相当于kubectl config use-context foo

在macOS上安装:brew install kubectx

kubectx包还包括一个用于切换名称空间的类似工具,称为kubens。

如果您经常在多个上下文中和名称空间中工作,这两个工具非常方便。

更多信息:https://ahmet.im/blog/kubectx/

最新的2020年答案在这里,

一个简单的方法切换kubectl上下文,

kubectl top nodes **--context=**context01name

kubectl top nodes --context=context02name

您还可以将上下文名称存储为env like context01name = gke_ $ {GOOGLE_CLOUD_PROJECT} _us-central1-a_standard-cluster-1

如果你正在寻找一个基于gui的Mac解决方案,并且已经安装了Docker桌面,你可以使用Docker菜单栏图标。在这里,你可以找到“Kubernetes”菜单,其中包含了你在kubecconfig中拥有的所有上下文,并且可以轻松地在它们之间切换。