Запросить демо
Я подтверждаю свое согласие на обработку компанией КРОК моих персональных данных, указанных в форме, в целях и пределах, установленных законодательством РФ о персональных данных в рамках проводимых мероприятий в течение неопределенного срока
Предпочтительный способ связи
Оставить заявку
Я подтверждаю свое согласие на обработку компанией КРОК моих персональных данных, указанных в форме, в целях и пределах, установленных законодательством РФ о персональных данных в рамках проводимых мероприятий в течение неопределенного срока
Узнать стоимость
Я подтверждаю свое согласие на обработку компанией КРОК моих персональных данных, указанных в форме, в целях и пределах, установленных законодательством РФ о персональных данных в рамках проводимых мероприятий в течение неопределенного срока
Предпочтительный способ связи
Попробовать бесплатно
Я подтверждаю свое согласие на обработку компанией КРОК моих персональных данных, указанных в форме, в целях и пределах, установленных законодательством РФ о персональных данных в рамках проводимых мероприятий в течение неопределенного срока
Предпочтительный способ связи
Регистрация в консоли
Я подтверждаю свое согласие на обработку компанией КРОК моих персональных данных, указанных в форме, в целях и пределах, установленных законодательством РФ о персональных данных в рамках проводимых мероприятий в течение неопределенного срока
Предпочтительный способ связи
Быть в теме

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

05.09.2018 3 минуты 1395

Для большинства людей знакомство с 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, т.к. очень легко забыть, в каком контексте вы находитесь, и если у вас несколько кластеров, случайно создать или что еще хуже удалить объекты в неправильном кластере.

Сервисы упоминаемые в статье

  1. Публичное облако КРОК

Не пропустите самые важные, интересные и полезные статьи недели

Ваш e-mail успешно подписан.

Смотрите также