NIK*_*NIK 4 kubernetes kubectl
在本例中,我有多个 Kubernetes 集群,并且希望同时在不同的集群上工作。(为了简单起见,将其保留为 2 个簇)
如Kubernetes 文档中所述,我配置了两个集群(将它们称为 dc1-main 和 dc2-main)
我正在使用应用程序支持用户(例如 appuser)登录 kubectl 所在的节点
同时在管理服务器的两个会话中,我使用 appuser 登录。
在这种情况下,我想使用 kubectl 来管理每个会话的一个上下文。
但是,如果我将活动上下文设置如下,则服务器的两个会话都会反映更改,因为两者都引用相同的配置文件(具有两个上下文)
kubectl config use-context dc1-main
Run Code Online (Sandbox Code Playgroud)
或者文档中的另一个选项是将命令作为参数传递上下文。这使得命令相当复杂。
kubectl --context="dc2-main" get nodes
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种简单的方法来快速更改此设置以更改上下文而不影响其他会话。这很可能是一个环境变量。不太确定这是否是最简单的。
我浏览了 kubectl 项目 GitHub,发现很久以前就有人要求进行与此类似的更改并谈论环境变量。
还有更好的建议吗?
标准 Kubernetes 客户端库支持$KUBECONFIG环境变量。这意味着几乎每个工具都支持它,包括 Helm 和您拥有的任何本地构建的工具。您可以将其设置为特定于集群的配置的路径。由于它是一个环境变量,因此每个 shell 都会有自己的副本。
export KUBECONFIG="$HOME/.kube/dc1-main.config"
kubectl get nodes
Run Code Online (Sandbox Code Playgroud)
在 shell 点文件中,您可以编写一个简单的 shell 函数来设置它
kubecfg() {
export KUBECONFIG="$HOME/.kube/$1.config"
}
Run Code Online (Sandbox Code Playgroud)
在我的使用中,每个 kubeconfig 文件中只有一个上下文(用户/主机/凭据),因此我几乎从不使用该kubectl config命令系列。这确实意味着,无论您最初如何设置 kubeconfig 文件,您要么需要为每个集群重复这些步骤,要么手动拆分现有的 kubeconfig 文件(它是 YAML,因此相当可行)。
# specifically for Amazon Elastic Kubernetes Service
kubecfg dc1-main
aws eks update-kubeconfig --name dc1-main ...
kubecfg dc2-main
aws eks update-kubeconfig --name dc2-main ...
Run Code Online (Sandbox Code Playgroud)
想要编写配置的工具也使用这个变量,对我来说,如果我想重新创建我的 minikube 环境,它通常会出现。chmod 0400 "$KUBECONFIG"您可能会发现在创建这些文件后对其进行保护很有用。
| 归档时间: |
|
| 查看次数: |
3167 次 |
| 最近记录: |