Два кластера на EKS, как переключаться между ними
Я не совсем уверен, что происходит, поэтому я задаю этот вопрос. Когда я запускаю эту команду:
kubectl config get-clusters
Я получил:
arn:aws:eks:us-west-2:91xxxxx371:cluster/eks-cluster-1
arn:aws:eks:us-west-2:91xxxxx371:cluster/eks1
тогда я бегу:
kubectl config current-context
и я получаю:
arn:aws:eks:us-west-2:91xxxxx371:cluster/eks-cluster-1
и если я бегу kubectl get pods
Я получаю ожидаемый результат. Но как мне переключиться на другой кластер / контекст? В чем разница между кластером и контекстом? Я не могу понять, как эти команды отличаются:
Когда я запускаю их, я все еще получаю стручки из неправильного кластера:
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
поэтому я действительно не знаю, как правильно переключаться между кластерами или контекстами, а также переключать процедуру аутентификации при этом.
Например:
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
4 ответа
Чтобы уточнить разницу set-context
а также use-context
Контекст - это группа параметров доступа. Каждый контекст содержит кластер Kubernetes, пользователя и пространство имен. Поэтому, когда вы делаете set-context, вы просто добавляете детали контекста в ваш файл конфигурации ~/.kube/config
, но это не переключает вас в этот контекст, в то время как использование-контекст на самом деле делает.
Таким образом, как отметил Василий, для переключения между кластерами запустите
kubectl config use-context <CONTEXT-NAME>
Кроме того, если вы запускаете kubectl config get-contexts
вы увидите список контекстов с указанием текущего.
Использование
kubectl config use-context arn:aws:eks:us-west-2:91xxxxx371:cluster/eks-cluster-1
а также
kubectl config use-context arn:aws:eks:us-west-2:91xxxxx371:cluster/eks
Рассмотрите возможность использования kubectx для управления своими контекстами.
использование
Просмотреть все контексты (текущий контекст выделен жирным шрифтом):
$kubectx
arn:aws:eks:us-east-1:12234567:cluster/eks_app
->gke_my_second_cluster
my-rnd
my-prod
Переключитесь на другой контекст:
$ kubectx my-rnd
Switched to context "my-rnd".
Бонус: по
той же ссылке - проверьте также инструмент kubens .
Это лучшая команда для переключения между разными кластерами EKS.
Я использую это каждый день.
aws eks update-kubeconfig --name example
Документация:
https://docs.aws.amazon.com/cli/latest/reference/eks/update-kubeconfig.html