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

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

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


当前回答

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

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

其他回答

最新的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

了解所有的背景

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>

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

你可以从本地(minikube)切换到gcloud,然后返回:

kubectl config use-context CONTEXT_NAME

列出所有上下文:

Kubectl配置get-contexts

您可以为local和gcloud创建不同的环境,并将其放在单独的yaml文件中。

如果你正在寻找一种在不同上下文之间切换的简单方法,也许这将会有所帮助。

我从前面提到的kubectx和kswitch脚本中得到了灵感,我可以将它们推荐给大多数用例。它们帮助解决切换任务,但在~/.kube/config的一些更大或更少的标准配置上对我造成了破坏。所以我创建了一个sys-exec调用包装器和一个kubectl的简写。

如果你不带参数地调用k,你会看到一个被拦截的切换上下文的提示。

Switch kubectl to a different context/cluster/namespace.
Found following options to select from:
 >>> context: [1] franz
 >>> context: [2] gke_foo_us-central1-a_live-v1
 >>> context: [3] minikube
 --> new num [?/q]:

更进一步,k继续作为一个简写。以下是等价的:

kubectl get pods --all-namespaces
k get pods -A
k p -A