Two clusters on EKS, how to switch between them

5/22/2019

I am not exactly sure what's going on which is why I am asking this question. When I run this command:

kubectl config get-clusters

I get:

arn:aws:eks:us-west-2:91xxxxx371:cluster/eks-cluster-1
arn:aws:eks:us-west-2:91xxxxx371:cluster/eks1

then I run:

kubectl config current-context

and I get:

arn:aws:eks:us-west-2:91xxxxx371:cluster/eks-cluster-1

and if I run kubectl get pods, I get the expected output. But how do I switch to the other cluster/context? what's the difference between the cluster and context? I can't figure out how these commands differ:

When I run them, I still get the pods from the wrong cluster:

root@4c2ab870baaf:/# kubectl config set-context arn:aws:eks:us-west-2:913617820371:cluster/eks1

Context "arn:aws:eks:us-west-2:913617820371:cluster/eks1" modified.

root@4c2ab870baaf:/#
root@4c2ab870baaf:/# kubectl get pods
NAME                            READY   STATUS    RESTARTS   AGE
apache-spike-579598949b-5bjjs   1/1     Running   0          14d
apache-spike-579598949b-957gv   1/1     Running   0          14d
apache-spike-579598949b-k49hf   1/1     Running   0          14d

root@4c2ab870baaf:/# kubectl config set-cluster arn:aws:eks:us-west-2:91xxxxxx371:cluster/eks1

Cluster "arn:aws:eks:us-west-2:91xxxxx371:cluster/eks1" set.

root@4c2ab870baaf:/# kubectl get pods
NAME                            READY   STATUS    RESTARTS   AGE
apache-spike-579598949b-5bjjs   1/1     Running   0          14d
apache-spike-579598949b-957gv   1/1     Running   0          14d
apache-spike-579598949b-k49hf   1/1     Running   0          14d

so I really don't know how to properly switch between clusters or contexts and also switch the auth routine when doing so.

For example:

contexts:
- context:
    cluster: arn:aws:eks:us-west-2:91xxxxx371:cluster/ignitecluster
    user: arn:aws:eks:us-west-2:91xxxx371:cluster/ignitecluster
  name: arn:aws:eks:us-west-2:91xxxxx371:cluster/ignitecluster
- context:
    cluster: arn:aws:eks:us-west-2:91xxxx371:cluster/teros-eks-cluster
    user: arn:aws:eks:us-west-2:91xxxxx371:cluster/teros-eks-cluster
  name: arn:aws:eks:us-west-2:91xxxxx371:cluster/teros-eks-cluster
--
amazon-web-services
eks
kubectl
kubernetes

2 Answers

5/22/2019

To clarify on the difference between set-context and use-context

A context is a group of access parameters. Each context contains a Kubernetes cluster, a user, and a namespace. So when you do set-context, you just adding context details to your configuration file ~/.kube/config, but it doesn't switch you to that context, while use-context actually does.

Thus, as Vasily mentioned, in order to switch between clusters run

kubectl config use-context <CONTEXT-NAME>

Also, if you run kubectl config get-contexts you will see list of contexts with indication of the current one.

-- A_Suh
Source: StackOverflow

5/22/2019

Use

kubectl config use-context arn:aws:eks:us-west-2:91xxxxx371:cluster/eks-cluster-1

and

kubectl config use-context arn:aws:eks:us-west-2:91xxxxx371:cluster/eks
-- Vasily Angapov
Source: StackOverflow