【问题标题】:Using multiple kubernetes cluster at same time using kops使用kops同时使用多个kubernetes集群
【发布时间】:2019-06-28 23:42:22
【问题描述】:

我正在使用 kops 在 AWS 中创建/管理 kubernetes 集群。

我创建了一个试点/中间实例来访问所有集群。

我注意到,即使我们创建了多个 SSH 会话(使用同一个用户),并且如果我将上下文更改为 cluster-a,它也会在其他会话中更改为 cluster-a。

问题是如果我们想同时管理不同的集群,我们每次都需要切换上下文。如果超过两个人使用该实例,则很难维持上下文切换。

可能会出现问题,我们为什么要使用多个集群,事情是有多个并行开发的流和模块,并且都同时进行测试。

有什么方法可以让我不必切换上下文,kops/kubectl 可以自动理解集群上下文?

示例:如果我从directory-a 执行命令,那么它会自动理解集群a.k8s.local。考虑到这一点,欢迎任何其他解决方案。

最后一个解决方案是为所有集群创建单独的试点实例,我试图避免这种做法,因为这些实例不会提供太多价值,只会增加成本。

【问题讨论】:

  • 除了公认的答案之外,最好的解决方案是我认为创建单独的用户来访问单独的集群。这样配置文件就不会相互冲突。

标签: kubernetes cluster-computing devops kubectl kops


【解决方案1】:

我正在使用您正在搜索的解决方案:当我位于特定目录中时,我可以管理特定集群。

首先,让我解释一下为什么你不能同时在多个集群上工作,即使是在不同的 SSH 会话上。

当您执行kubectl config use-context 来切换当前上下文时,您实际上是在修改current-context: your-context 中的~/.kube/config。因此,如果您的团队成员之一正在切换上下文,这也适用于您的其他团队成员,尤其是当他们连接到同一用户时。

现在,以下步骤可以帮助您解决此问题:

  • 安装direnv。当您位于目录中时,此工具将允许您设置自定义环境变量。
  • 在 kubeconfig 文件旁边,创建一个 .envrc 文件:

    path_add KUBECONFIG kubeconfig
    
  • 运行direnv allow
  • 检查KUBECONFIG env var (echo $KUBECONFIG) 的内容。它应该看起来像 /path/to/dir-a/kubeconfig:/home/user/.kube/config
  • 将您当前的~/.kube/config 拆分为位于不同文件夹中的多个kubeconfig 文件:dir-a/kubeconfigdir-b/kubeconfig 等。您也可以进入 dir-a 并执行 kops export kubecfg your-cluster-name
  • 使用kubectl config view --minify 检查当前上下文
  • 转到dir-b 并从第 2 步开始重复

您还可以在 .envrc 中设置其他环境变量,以帮助您管理这些不同的集群(可能是不同的 kops 状态存储)。

【讨论】:

    猜你喜欢
    • 2018-12-26
    • 2021-05-14
    • 2022-09-26
    • 2020-10-15
    • 2020-08-01
    • 2020-01-19
    • 2017-12-10
    • 2020-05-05
    • 2018-04-05
    相关资源
    最近更新 更多