代码之家  ›  专栏  ›  技术社区  ›  jayunit100

如何使用kubectl工具(以有状态/本地方式)同时管理来自不同目录的多个集群?

  •  2
  • jayunit100  · 技术社区  · 7 年前

    有没有一种方法可以在“会话”中运行kubectl,使其从本地目录而不是从本地目录获取kubeconfig ~/.kubeconfig ?

    示例用例

    考虑到这个问题的抽象性质,值得在一个例子中描述一下为什么这可能是有价值的。如果有人有一个应用程序,称之为“a”,他们有4个kubernetes集群,每个集群运行一个,他们可能有一个简单的脚本,可以执行一些操作 kubectl 每个集群中的操作要冒烟测试应用程序的新部署,例如,他们可能想要部署应用程序,然后查看每个集群中自动缩放的应用程序副本数。

    示例解决方案

    在git中,可能会有一个“如果可以找到本地kubeconfig文件,请尝试使用该文件”作为git风格的全局设置:

    kubectl global set-precedence local-kubectl
    

    然后,在一个终端中:

    cd firstcluster
    cat << EOF > kubeconfig
    firstcluster
    ...
    EOF
    kubectl get pods
    p4
    

    然后,在另一个终端:

    cd secondcluster/
    cat << EOF > kubeconfig
    secondcluster
    ...
    EOF
    kubectl get pods
    p1
    p2
    p3
    

    因此,完全相同的kubectl命令(无需设置上下文)实际上是针对新集群运行的,具体取决于您所在的目录。

    一些解决方案的想法

    • 我的一个想法是,编写一个kubectl上下文插件,不知何故,它让kubectl始终检查本地kubeconfig,在运行之前尽可能在后台将上下文设置为与目录名匹配的全局配置中的上下文。

    • 我的另一个想法是创建不同的用户,每个用户都有不同的kubeconfig主文件。

    • 当然,使用virtualenv之类的工具,您可能可以在kubeconfig文件有其不同价值的地方做一些事情。

    最后的想法

    最终我认为这里的目标是颠覆a~/的观点。kubeconfig文件有任何特定的含义,相反,请查看许多kubeconfig文件可以在同一台机器中使用的方式,而不仅仅是使用 --kubeconfig 选项,但状态仍然以目录本地方式维护。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Rico    7 年前

    好了,配置文件在下面 ~/.kube/config 而不是 ~/.kubeconfig .我想你是在看你对答案的看法,所以你给了我一个关于创造的好主意 kubevm ,灵感来自 awsvm 对于 AWS CLI , chefvm 用于管理多个Chef服务器和 rvm 用于管理多个Ruby版本。

    所以,本质上,你可以有一个 库贝夫 可在不同设备之间切换的设置 ~/.kube 配置。您可以使用如下CLI:

    # Use a specific config
    kubevm use {YOUR_KUBE_CONFIG|default}
    # or
    kubevm YOUR_KUBE_CONFIG
    
    # Set your default config
    kubevm default YOUR_KUBE_CONFIG
    
    # List your configurations, including current and default
    kubevm list
    
    # Create a new config
    kubevm create YOUR_KUBE_CONFIG
    
    # Delete a config
    kubevm delete YOUR_KUBE_CONFIG
    
    # Copy a config
    kubevm copy SRC_CONFIG DEST_CONFIG
    
    # Rename a config
    kubevm rename OLD_CONFIG NEW_CONFIG
    
    # Open a config directory in $EDITOR
    kubevm edit YOUR_KUBE_CONFIG
    
    # Update kubevm to the latest
    kubevm update
    

    如果有用就告诉我!

    推荐文章