我有一个命令行实用程序来启动/停止扩展到管理Kubernetes集群的VM。它可以当前保存kubeconfig
,以及将新配置合并到用户现有的~/.kube/config
中-但是我正在使用的命令(来自How to merge kubectl config file with ~/.kube/config?)也会切换活动上下文:>
KUBECONFIG=<temporary_path_to_newly_created_config>:~/.kube/config kubectl config view --flatten`
是否有一种方法可以阻止活动上下文切换,除非我希望这样做?我在kubectl config view --flatten
上使用了错误的命令,是否有一个合并选项没有对活动上下文进行任何更改?
答案 0 :(得分:0)
kubectl config use-context my-cluster-name
或
第二个选项将使您的生活更加轻松,当然,对于两种解决方案,您都必须在KUBECONFIG
中设置配置文件
答案 1 :(得分:0)
为什么kubectl
会表现得如此。
current-context
值。在current-context
变量中指定的kubeconfig文件中或在其他使用参数$KUBECONFIG
指定的文件中,您可能有多个--kubeconfig=
值。 ~/.kube/config
变量为空并且未提供参数kubectl
时,存在$KUBECONFIG
使用的默认kubeconfig文件--kubeconfig=
。 kubectl
时,它都会从kubeconfig文件中读取并合并值,以为当前运行构建其配置。 kubectl
定向到use-context
时
KUBECONFIG=config1:config2 kubectl config use-context my_context
,
它将上下文保存到$KUBECONFIG
变量(config1)中 first 列出的文件中。 因此,说kubectl“切换活动上下文”并不完全准确。它将上下文保存到您指向的位置,并从您指向的位置读取[可能是另一个]上下文。 当前 current-context
运行的kubectl
是基于其命令行参数,kubeconfig文件的内容以及它们在$KUBECONFIG
中列出的顺序设置的变量。
现在回到问题。
Q:
有没有办法防止活动上下文切换,除非我 想要吗?并且有一个合并选项,不会对 活动情境?
A:
由于在当前运行current-context被分配为“活动”,因此无法防止切换“活动上下文” >每次 kubectl
启动。另外,kubectl
不应被视为纯文本解析和合并工具。
在您描述的特定情况下谈论默认配置,要重用先前使用或首选的上下文,或者您认为“当前”的上下文,应列出带有以下内容的kubeconfig文件: $KUBECONFIG
变量中该上下文第一个:
KUBECONFIG=~/.kube/config:new_config_to_merge kubectl config view --flatten > ...
注意。如果kubeconfig文件中的无包含不为空的current-context
值,则会出现错误:error: current-context is not set
。