How to switch kubectl clusters between gcloud and minikube

后端 未结 14 1125
再見小時候
再見小時候 2021-01-29 19:01

I have Kubernetes working well in two different environments, namely in my local environment (MacBook running minikube) and as well as on Google\'s Container Engine (GCE, Kubern

相关标签:
14条回答
  • 2021-01-29 19:48

    Latest 2020 answer is here,

    A simple way to switch between kubectl context,

    kubectl top nodes **--context=**context01name
    
    kubectl top nodes --context=context02name
    

    You can also store the context name as env like context01name=gke_${GOOGLE_CLOUD_PROJECT}_us-central1-a_standard-cluster-1

    0 讨论(0)
  • 2021-01-29 19:49

    I got bored of typing this over and over so I wrote a simple bash utility to switch contexts

    You can find it here https://github.com/josefkorbel/kube-switch

    0 讨论(0)
  • 2021-01-29 19:54

    To get all context

    C:\Users\arun>kubectl config get-contexts
    

    To get current context

    C:\Users\arun>kubectl config current-context
    

    To switch context

    C:\Users\arun>kubectl config use-context <any context name from above list>
    
    0 讨论(0)
  • 2021-01-29 19:56

    The canonical answer of switching/reading/manipulating different kubernetes environments (aka kubernetes contexts) is, as Mark mentioned, to use kubectl config, see below:

    $ kubectl config                                                                                                                                                                                                                 
    Modify kubeconfig files using subcommands like "kubectl config set current-context my-context"
    
    Available Commands:
      current-context Displays the current-context
      delete-cluster  Delete the specified cluster from the kubeconfig
      delete-context  Delete the specified context from the kubeconfig
      get-clusters    Display clusters defined in the kubeconfig
      get-contexts    Describe one or many contexts
      rename-context  Renames a context from the kubeconfig file.
      set             Sets an individual value in a kubeconfig file
      set-cluster     Sets a cluster entry in kubeconfig
      set-context     Sets a context entry in kubeconfig
      set-credentials Sets a user entry in kubeconfig
      unset           Unsets an individual value in a kubeconfig file
      use-context     Sets the current-context in a kubeconfig file
      view            Display merged kubeconfig settings or a specified kubeconfig file
    
    Usage:
      kubectl config SUBCOMMAND [options]
    

    Behind the scene, there is a ~/.kube/config YAML file that stores all the available contexts with their corresponding credentials and endpoints for each contexts.

    Kubectl off the shelf doesn't make it easy to manage different kubernetes contexts as you probably already know. Rather than rolling your own script to manage all that, a better approach is to use a mature tool called kubectx, created by a Googler named "Ahmet Alp Balkan" who's on Kubernetes / Google Cloud Platform developer experiences Team that builds tooling like this. I highly recommend it.

    https://github.com/ahmetb/kubectx

    $ kctx --help                                                                                                                                                                                                                  
    USAGE:
      kubectx                       : list the contexts
      kubectx <NAME>                : switch to context <NAME>
      kubectx -                     : switch to the previous context
      kubectx <NEW_NAME>=<NAME>     : rename context <NAME> to <NEW_NAME>
      kubectx <NEW_NAME>=.          : rename current-context to <NEW_NAME>
      kubectx -d <NAME> [<NAME...>] : delete context <NAME> ('.' for current-context)
                                      (this command won't delete the user/cluster entry
                                      that is used by the context)
    
      kubectx -h,--help         : show this message
    
    0 讨论(0)
  • 2021-01-29 20:00

    A faster shortcut to the standard kubectl commands is to use kubectx:

    • List contexts: kubectx
      • Equivalent to kubectl config get-contexts
    • Switch context (to foo): kubectx foo
      • Equivalent to kubectl config use-context foo

    To install on macOS: brew install kubectx

    The kubectx package also includes a similar tool for switching namespaces called kubens.

    These two are super convenient if you work in multiple contexts and namespaces regularly.

    More info: https://ahmet.im/blog/kubectx/

    0 讨论(0)
  • 2021-01-29 20:05

    TL;DR: I created a GUI to switch Kubernetes contexts via AppleScript. I activate it via shift-cmd-x.

    I too had the same issue. It was a pain switching contexts by the command line. I used FastScripts to set a key combo (shift-cmd-x) to run the following AppleScript (placed in this directory: $(HOME)/Library/Scripts/Applications/Terminal).

    use AppleScript version "2.4" -- Yosemite (10.10) or later
    use scripting additions
    
    do shell script "/usr/local/bin/kubectl config current-context"
    set curcontext to result
    
    do shell script "/usr/local/bin/kubectl config get-contexts -o name"
    set contexts to paragraphs of result
    
    choose from list contexts with prompt "Select Context:" with title "K8s Context Selector" default items {curcontext}
    set scriptArguments to item 1 of result
    
    do shell script "/usr/local/bin/kubectl config use-context " & scriptArguments
    
    display dialog "Switched to " & scriptArguments buttons {"ok"} default button 1
    
    0 讨论(0)
提交回复
热议问题