我需要通过我的Windows系统同时使用Azure CLI连接生产和非生产环境。我可以访问这两个环境,并且也有两个环境的 kube 配置文件。
我是 AKS 的新手,因此我正在管理系统中的两个文件,并通过重命名其他文件来使用配置文件连接任一环境。例如,我的目录中有两个文件,即
C:\Users\foo\.kube
,文件名为 config 和 config-nonprod。现在我使用以下命令登录到 Azure CLI
现在,如果我运行
kubectl get ns
命令,它将列出可用于生产的命名空间,因为我当前的配置文件设置为生产。
现在,如果我想连接非产品环境,那么我只需将当前 config 文件重命名为 config-prod 并将当前 config-nonprod 文件重命名为 config 。如果我运行
kubectl get ns
命令,那么现在它将列出非产品环境的可用命名空间。
我不想每次都做这个练习。我需要任何可以同时连接两个环境的方法。
我们将非常感谢及时的帮助。
没错,
kubectl
,与 Kubernetes 交互的命令行工具,原生不支持通过单个命令操作多个集群。 KUBECONFIG
环境变量或 --kubeconfig
标志用于为每个操作指定单个集群的配置文件。
但是,您可以在单个
kubeconfig
文件中拥有多个上下文,其中每个上下文对应于不同的集群。您可以在这些上下文之间切换以与不同的集群进行交互。管理和切换上下文-
kubectl config get-contexts
kubectl config use-context <context-name>
通过更改上下文与特定集群交互 -
kubectl config use-context <other-context-name>
kubectl get ns
要使用 Azure CLI 同时连接到多个 Kubernetes 集群,可以使用
KUBECONFIG
环境变量指定多个 kubeconfig 文件。 1. 打开命令提示符并设置 KUBECONFIG
环境变量以包含两个以分号 (;) 分隔的 kubeconfig 文件
set KUBECONFIG=C:\Users\foo\.kube\config;C:\Users\foo\.kube\config-nonprod
运行
az login
命令以针对这两个环境使用 Azure 进行身份验证
az login --scope foo
az account set --subscription bar
运行
kubectl
命令以与所需环境进行交互,如上所述,使用
kubectl config set-context <context-name>
kubectl get ns
顺便说一句,为了使切换更加容易,您可以为上下文切换命令创建别名 使用 powershell-
Set-Alias kctx-nonprod "kubectl config use-context <your-nonprod-context-name>"
使用 bash-
alias kctx-nonprod="kubectl config use-context your-nonprod-context-name"
现在您只需调用
kctx-nonprod
或 kctx-prod
即可快速切换上下文。通过执行这些步骤,您应该能够从一台机器管理多个 Kubernetes 集群,而无需不断重命名和切换 kubeconfig 文件。
参考: kubectl 配置上下文