如果我在不同的终端会话中与不同的kubernetes集群进行交互而又不必一直切换上下文怎么办?

时间:2019-10-29 13:31:51

标签: kubernetes kubectl amazon-eks aws-eks

我现在正在测试角色差异,因此每个角色设置都有一个上下文。

终端会话 Admin ,我希望能够在一个会话中使用上下文Admin,以便可以根据需要更新规则。

在终端会话 User 中,我希望能够通过其上下文测试该角色。

(注意:我在EKS上,因此角色映射到IAM角色)

5 个答案:

答案 0 :(得分:2)

以下是管理多个kubectl上下文的一些技巧:

  • 使用asdf管理多个kubectl版本
  • Set the KUBECONFIG环境变量可在多个kubeconfig文件之间切换
  • 使用kube-ps1跟踪当前上下文/名称空间
  • 使用kubectx and kubens在群集/命名空间之间快速切换
  • 使用别名将它们组合在一起

看看这篇文章,它说明了如何实现此目的:Using different kubectl versions with multiple Kubernetes clusters(免责声明:我写了提到的文章)

我还建议将其读取为:Mastering the KUBECONFIG fileConfigure Access to Multiple Clusters

答案 1 :(得分:1)

嗯,我是个白痴。

kubectl的--help输出中没有答案,但是,手册页中也有此输出。

所有要做的就是将--context标志放入其命令中。

答案 2 :(得分:0)

您可以创建位于~/.kube/config下的上下文文件的副本,并在2个不同的Shell中,使用第一个的export KUBECONFIG=/path/to/kubeconfig1和第一个的export KUBECONFIG=/path/to/kubeconfig2指向2个不同的配置文件。第二。您可以编辑这些文件以选择2个不同的上下文。

要轻松选择上下文/在上下文之间进行切换,可以使用kubectx as suggested by Blokje5

答案 3 :(得分:0)

我一直喜欢kubectx作为快速切换上下文的一种方式。如果您使用aws-iam-authenticator正确设置了上下文,就像这样:

users:
- name: kubernetes-admin
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      command: aws-iam-authenticator
      args:
        - "token"
        - "-i"
        - "<cluster_id>"
        - "-r"
        - "<admin_role_arn>"
- name: kubernetes-user
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      command: aws-iam-authenticator
      args:
        - "token"
        - "-i"
        - "<cluster_id>"
        - "-r"
        - "<user_role_arn>"

这应该使您可以轻松切换上下文。 (注意:这是假设角色类型的情况。您也可以将AWS_PROFILE传递给aws-iam-authenticator。)

答案 4 :(得分:0)

现在有了 kubie。 https://github.com/sbstp/kubie

它可以解决所有问题。