Kubernetes: настройка kubectl для работы с несколькими кластерами
О технологиях

Kubernetes: настройка kubectl для работы с несколькими кластерами

1615
4 минуты

Для большинства людей знакомство с Kubernetes заканчивается на установке единственного кластера и настройке kubectl по умолчанию. Но что если возникает необходимость управлять несколькими кластерами? В этой статье я решил рассказать об использовании kubectl с различными контекстами.

В большинстве случаев нет однозначного ответа на вопрос «Как настроить kubectl для использования с несколькими кластерами?». В первую очередь это зависит от того, настроили ли вы кластер на использование сертификатов или нет. Далее я буду предполагать, что настроили, т.к. такая настройка кластера является наилучшей практикой.


kubectl обычно записывает свой конфигурационный файл в директорию .kube в вашей домашней директории. Когда вы установите его для первого кластера, файл конфигурации будет выглядеть примерно так:



apiVersion: v1
clusters:
- cluster:
    certificate-authority: /path/to/ca.pem
    server: https://default-master.domain
  name: default-cluster
contexts:
- context:
    cluster: default-cluster
    user: default-admin
  name: default-system
current-context: default-system
kind: Config
preferences: {}
users:
- name: default-admin
  user:
    client-certificate: /path/to/admin.pem
    client-key: /path/to/admin-key.pem

Поэтому, как только у нас появляется второй кластера, например, для клиента образно называемый «customer-cluster», нам нужно добавить в кластер следующую запись:



- cluster:
    certificate-authority: /path/to/customer/ca.pem
    server: https://customer-master.domain
  name: customer-cluster

Эта настройка именует кластер и указывает kubectl на CA сертификат и URL-адрес его сервера API.

Затем контекст:



- context:
    cluster: customer-cluster
    user: customer-admin
  name: customer-cluster

Контекст связывает кластер и пользователя для доступа к кластеру. kubectl будет использовать этот контекст для доступ к нему. Наконец, секция пользователя для этого кластера:



- name: customer-admin
  user:
    client-certificate: /path/to/customer/admin.pem
    client-key: /path/to/customer/admin-key.pem

Здесь мы указываем путь к сертификату и ключу для этого пользователя. Таким образом, весь файл будет выглядеть следующим образом:



apiVersion: v1
clusters:
- cluster:
    certificate-authority: /path/to/ca.pem
    server: https://default-master.domain
  name: default-cluster
- cluster:
    certificate-authority: /path/to/customer/ca.pem
    server: https://customer-master.domain
  name: customer-cluster
contexts:
- context:
    cluster: default-cluster
    user: default-admin
  name: default-system
- context:
    cluster: customer-cluster
    user: customer-admin
  name: customer-cluster
current-context: default-system
kind: Config
preferences: {}
users:
- name: default-admin
  user:
    client-certificate: /path/to/admin.pem
    client-key: /path/to/admin-key.pem
- name: customer-admin
  user:
    client-certificate: /path/to/customer/admin.pem
    client-key: /path/to/customer/admin-key.pem

Теперь при использовании kubectl, вы можете использовать —context для указания того, какой кластер вам нужен. Вам не нужно использовать —contextпри использовании кластера по умолчанию.

Например, команда:


kubectl --context customer-cluster get nodes

Возвращает узлы в кластере клиента, авторизуясь на сервере API с помощью сертификата пользователя и ключа customer-admin. Вы можете установить контекст, используя команду:


kubectl config use-context customer-cluster

Теперь команда


kubectl get nodes

Покажет узлы кластера клиента, а не узлы предыдущего кластера по умолчанию. Чтобы вернуться обратно к настройкам по умолчанию, выполните команду:


kubectl config use-context default-system

Чтобы узнать, в каком контексте вы сейчас работаете, выполните команду:


kubectl config current-context

Не смотря на удобство использования контекста по умолчанию, я рекомендую всегда использовать явное указание контекста при помощи —context в ваших командах kubectl, т.к. очень легко забыть, в каком контексте вы находитесь, и если у вас несколько кластеров, случайно создать или что еще хуже удалить объекты в неправильном кластере.

Внедряем и поддерживаем Kubernetes/DevOps
Развертываем и сопровождаем инфраструктуру для бизнес-приложений на базе микросервисов и контейнеров

19 июня 2023
Семь трендов на рынке облачных услуг в 2023 году
До 2022 года на рынке облаков в России главенствовали мировые тренды, но сейчас наша страна пошла своим путем. О том, для чего сейчас компании используют облачные технологии и как меняется рынок, рассказал директор бизнес-юнита K2 Cloud Сергей Зинкевич.
1 минута
1021
29 марта 2023
Сетевые балансировщики нагрузки и другие обновления К2 Облака

Мы рады вам представить новый сервис K2 Облака для распределения трафика между экземплярами – Балансировщики нагрузки. Кроме того, мы автоматизировали обновление сертификатов Kubernetes и добавили возможность удаления рабочих узлов из кластера Kubernetes.

2 минуты
320
12 января 2023
Российский Kubernetes, какой он? Знакомьтесь, платформа Deckhouse

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

2 минуты
1568
26 декабря 2022
Что выгоднее — использовать готовую платформу для управления контейнерами или разрабатывать своими силами?
Совсем недавно мы провели опрос среди ИТ-руководителей, чтобы выяснить, насколько они знакомы с технологией Kubernetes и используют ли ее в ИТ-инфраструктуре своей компании, личных проектах и т.д. Результаты показали, что 63% опрошенных уже работает с Kubernetes прямо сейчас, 23% пока не дошли и 14% участников планируют в ближайшее время.
1 минута
551
15 ноября 2022
OpenShift остался без поддержки – как решить проблему российским клиентам
Интерес к семейству ПО для контейнеризации OpenShift был довольно высоким в корпоративном сегменте в прежние годы. По данным мониторинговой службы Datadog, только за прошлый год во всем мире количество пользователей платформ от RedHat увеличилось на 28%. Весной IBM объявил об уходе из России и прекращении поддержки всех программных продуктов для текущих клиентов. Разберемся, насколько критичной оказалась данная ситуация для заказчиков, и какие варианты действий существуют, чтобы минимизировать возможные риски отключения от сервиса.
0 минут
709
scrollup