Использование нескольких кластеров kubernetes одновременно с использованием копов - PullRequest
0 голосов
/ 05 февраля 2019

Я использую копы для создания / управления кластерами kubernetes в AWS.

Я создал пилотный / промежуточный экземпляр для доступа ко всем кластерам.

Я заметил, что даже если мы создадим несколько сеансов SSH (используя одного и того же пользователя), и если я изменю контекст на cluster-a, он будет заменен на cluster-a в другом сеансе.

Проблема в том, что нам нужно каждый раз переключать контекст, если мы хотим одновременно управлять разными кластерами.Очень сложно поддерживать переключение контекста, если более двух человек используют этот экземпляр.

Может возникнуть вопрос, почему мы используем несколько кластеров, дело в том, что параллельно создаются несколько потоков и модулей, и всеперейти к тестированию одновременно.

Есть ли способ, при котором мне не нужно переключать контекст, и kops / kubectl может автоматически понимать контекст кластера?

Пример: Если яЯ выполняю команду от directory-a, тогда она автоматически понимает кластер a.k8s.local.Просто думая об этом, приветствуется любое другое решение.

Последнее решение заключается в создании отдельных пилотных экземпляров для всех кластеров, которых я стараюсь избегать, так как эти экземпляры не представляют большой ценности и просто увеличивают стоимость.

1 Ответ

0 голосов
/ 05 февраля 2019

Я использую именно то решение, которое вы ищете: я могу управлять конкретным кластером, когда я нахожусь в определенном каталоге.

Прежде всего, позвольте мне объяснить, почему вы не можете работать с несколькими кластерами вв то же время даже в разных сеансах SSH.

Когда вы делаете kubectl config use-context для переключения текущего контекста, вы фактически модифицируете current-context: your-context в ~/.kube/config.Поэтому, если один из членов вашей команды переключает контекст, это также относится и к другим членам вашей команды, особенно если они подключаются к одному и тому же пользователю.

Теперь следующие действия помогут вам обойти эту проблему:

  • Установить direnv .Этот инструмент позволит вам установить пользовательские переменные env, когда вы находитесь в каталоге.
  • Рядом с файлами kubeconfig создайте файл .envrc:

    path_add KUBECONFIG kubeconfig
    
  • Выполнить direnv allow
  • Проверьте содержимое KUBECONFIG env var (echo $KUBECONFIG).Он должен выглядеть следующим образом: /path/to/dir-a/kubeconfig:/home/user/.kube/config
  • Разделить ваш текущий ~/.kube/config на несколько kubeconfig файлов, расположенных в разных папках: dir-a/kubeconfig, dir-b/kubeconfig и так далее.Вы также можете зайти в dir-a и выполнить kops export kubecfg your-cluster-name.
  • . Проверить текущий контекст с помощью kubectl config view --minify
  • . Перейти к dir-b и повторить с шага 2
...