有没有一种方法可以在“ session ”中运行kubectl,使其从本地目录而不是从~/.kubeconfig
获取其kubeconfig?
示例用例
考虑到问题的抽象性质,值得在一个示例中说明为什么这可能是有值(value)的。如果某人有一个应用程序,将其称为“a”,并且他们有4个kubernetes集群,每个集群都运行a,那么他们可能会有一个简单的脚本,该脚本在每个集群中执行了一些kubectl
操作,以对A的新部署进行烟雾测试,例如,可能想要部署该应用程序,然后查看每个集群中自动缩放了多少个副本。
示例解决方案
就像在git中一样,也许有一种“尝试使用本地kubeconfig文件(如果可以找到的话)”作为git样式的全局设置:
kubectl global set-precedence local-kubectl
然后,在一个终端中:
cd firstcluster
cat << EOF > kubeconfig
firstcluster
...
EOF
kubectl get pods
p4
然后,在另一个终端中:
cd secondcluster/
cat << EOF > kubeconfig
secondcluster
...
EOF
kubectl get pods
p1
p2
p3
因此,实际上完全相同的kubectl命令(无需设置上下文)实际上取决于您所在的目录针对新集群运行。
解决方案的一些想法
最后的想法
最终,我认为这里的目标是颠覆〜/ .kubeconfig文件具有任何特定含义的想法,而是着眼于可以在同一台机器上使用许多kubeconfig文件的方式,但是,不仅是使用
--kubeconfig
选项,而是,以仍然以目录本地方式维护状态的方式。 最佳答案
AFAIK,配置文件位于~/.kube/config
下,而不是~/.kubeconfig
下。我想您正在对您的答案发表意见,因此您给了我关于创建 kubevm
的好主意,灵感来自 awsvm
的AWS CLI, chefvm
的管理多个Chef服务器和 rvm
的管理多个Ruby版本。
因此,从本质上讲,您可以在不同的kubevm
配置之间切换的~/.kube
设置。您可以使用如下CLI:
# Use a specific config
kubevm use {YOUR_KUBE_CONFIG|default}
# or
kubevm YOUR_KUBE_CONFIG
# Set your default config
kubevm default YOUR_KUBE_CONFIG
# List your configurations, including current and default
kubevm list
# Create a new config
kubevm create YOUR_KUBE_CONFIG
# Delete a config
kubevm delete YOUR_KUBE_CONFIG
# Copy a config
kubevm copy SRC_CONFIG DEST_CONFIG
# Rename a config
kubevm rename OLD_CONFIG NEW_CONFIG
# Open a config directory in $EDITOR
kubevm edit YOUR_KUBE_CONFIG
# Update kubevm to the latest
kubevm update
让我知道它是否有用!