使用 kops 同时使用多个 kubernetes 集群
Using multiple kubernetes cluster at same time using kops
我正在使用 kops 在 AWS 中创建/管理 kubernetes 集群。
我已经创建了一个试验/中间实例来访问所有集群。
我注意到,即使我们创建了多个 SSH 会话(使用同一用户),并且如果我将上下文更改为 cluster-a,它也会在其他会话中更改为 cluster-a。
问题是如果我们想同时管理不同的集群,我们每次都需要切换上下文。如果有两个以上的人在使用该实例,则很难保持上下文切换。
可能会出现这样的问题,即我们为什么要使用多个集群,问题是并行开发了多个流和模块,并且都同时进行了测试。
有什么方法可以不用切换上下文,kops
/kubectl
可以自动理解集群上下文?
示例:如果我从 directory-a
执行命令,那么它会自动理解集群 a.k8s.local
。想到这里,欢迎任何其他解决方案。
最后一个解决方案是为所有集群创建单独的试点实例,我试图避免这种情况,因为这些实例不会提供太多价值,只会增加成本。
我正在使用您正在寻找的解决方案:当我位于特定目录时,我可以管理特定集群。
首先,让我解释一下为什么即使在不同的 SSH 会话上也不能同时在多个集群上工作。
当您执行 kubectl config use-context
切换当前上下文时,您实际上是在修改 ~/.kube/config
中的 current-context: your-context
。因此,如果您的团队成员之一正在切换上下文,这也适用于您的其他团队成员,尤其是当他们连接到同一用户时。
现在,以下步骤可以帮助您解决此问题:
- 安装direnv。当您位于目录中时,此工具将允许您设置自定义环境变量。
在 kubeconfig 文件旁边,创建一个 .envrc
文件:
path_add KUBECONFIG kubeconfig
- 运行
direnv allow
- 检查
KUBECONFIG
环境变量 (echo $KUBECONFIG
) 的内容。它应该看起来像 /path/to/dir-a/kubeconfig:/home/user/.kube/config
- 将您当前的
~/.kube/config
拆分为位于不同文件夹中的多个 kubeconfig
文件:dir-a/kubeconfig
、dir-b/kubeconfig
等等。您也可以进入 dir-a 并执行 kops export kubecfg your-cluster-name
.
- 使用
kubectl config view --minify
检查当前上下文
- 转到
dir-b
并从步骤 2 开始重复
您还可以在 .envrc
中设置其他环境变量,以帮助您管理这些不同的集群(可能是不同的 kops 状态存储)。
我正在使用 kops 在 AWS 中创建/管理 kubernetes 集群。
我已经创建了一个试验/中间实例来访问所有集群。
我注意到,即使我们创建了多个 SSH 会话(使用同一用户),并且如果我将上下文更改为 cluster-a,它也会在其他会话中更改为 cluster-a。
问题是如果我们想同时管理不同的集群,我们每次都需要切换上下文。如果有两个以上的人在使用该实例,则很难保持上下文切换。
可能会出现这样的问题,即我们为什么要使用多个集群,问题是并行开发了多个流和模块,并且都同时进行了测试。
有什么方法可以不用切换上下文,kops
/kubectl
可以自动理解集群上下文?
示例:如果我从 directory-a
执行命令,那么它会自动理解集群 a.k8s.local
。想到这里,欢迎任何其他解决方案。
最后一个解决方案是为所有集群创建单独的试点实例,我试图避免这种情况,因为这些实例不会提供太多价值,只会增加成本。
我正在使用您正在寻找的解决方案:当我位于特定目录时,我可以管理特定集群。
首先,让我解释一下为什么即使在不同的 SSH 会话上也不能同时在多个集群上工作。
当您执行 kubectl config use-context
切换当前上下文时,您实际上是在修改 ~/.kube/config
中的 current-context: your-context
。因此,如果您的团队成员之一正在切换上下文,这也适用于您的其他团队成员,尤其是当他们连接到同一用户时。
现在,以下步骤可以帮助您解决此问题:
- 安装direnv。当您位于目录中时,此工具将允许您设置自定义环境变量。
在 kubeconfig 文件旁边,创建一个
.envrc
文件:path_add KUBECONFIG kubeconfig
- 运行
direnv allow
- 检查
KUBECONFIG
环境变量 (echo $KUBECONFIG
) 的内容。它应该看起来像/path/to/dir-a/kubeconfig:/home/user/.kube/config
- 将您当前的
~/.kube/config
拆分为位于不同文件夹中的多个kubeconfig
文件:dir-a/kubeconfig
、dir-b/kubeconfig
等等。您也可以进入 dir-a 并执行kops export kubecfg your-cluster-name
. - 使用
kubectl config view --minify
检查当前上下文
- 转到
dir-b
并从步骤 2 开始重复
您还可以在 .envrc
中设置其他环境变量,以帮助您管理这些不同的集群(可能是不同的 kops 状态存储)。