access multiple clusters with kubernetes context

有时候往往需要和多个Kubernetes集群交互,我之前一直是每个集群一个config文件,然后通过cp ~/.kube/config.xxxx ~/.kube/config这样来切换🤦‍♂️。

其实通过Kubernetes的Context,就不用这么麻烦了。不过按照文档操作有点繁琐,其实自己编辑~/.kube/config就行了,不过记得先备份一下。就是把其他集群的cluster、user、context分别添加一份到~/.kube/config,注意改下名字之类。

之后就可以这样kubectl config use-context minikube来切换context为minikube了。执行kubectl config current-context可以显示当前的context。但是这个命令还是太长了,不友好。可以安装kubectx,支持交互式操作(配合fzf)来选择并切换context和namespace。在macOS只要执行brew install kubectx就能安装了。

下面是执行kubectx的效果:

kubectx

同样,执行kubens可以列出当前context指定集群的可用namespace,然后通过方向键选择。之后执行kubectl get pod就不用指定--context=xxx -n=yyy来操作了。

更进一步,由于kubectl支持插件机制,我们只要执行:

1
2
ln -s /usr/local/bin/kubectx /usr/local/bin/kubectl-ctx
ln -s /usr/local/bin/kubens /usr/local/bin/kubectl-ns

然后只要运行kubectl ctxkubectl ns就行了,不需要再敲kubectx和kubens。