Настройка параметров системы и конфигурация kubeconfig#

Настройка основных параметров системы#

В этом разделе описываются основы системного администрирования в DropApp. Основное внимание уделяется задачам, которые системный администратор должен выполнить сразу после успешной установки и настройки DropApp.

Установка и настройка программного обеспечения осуществляется с помощью утилит управления кластером DropApp, например, kubeadm, kubelet и kubectl.

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

В рабочих узлах размещены pod, являющиеся компонентами приложения. Управляющий слой (control plane), представляет собой совокупность главных узлов и управляет рабочими узлами и pods в кластере DropApp.

В данном разделе представлена информация об администрировании компонентов, необходимых для работы кластера DropApp.

Файл kubeconfig#

По умолчанию инструмент командной строки для управления кластерами kubectl задействуется через командную строку (например, через bash) и использует контексты (context) для взаимодействия с кластером DropApp. Контекст DropApp - это набор параметров доступа, содержащий кластер DropApp, пользователя и namespace. Контексты используются для доступа к определенному кластеру и namespace с помощью учетной записи пользователя. Установка того, с каким кластером взаимодействует DropApp и изменение конфигурационной информации осуществляются посредством kubectl.

В каждом контексте есть три ключевых параметра: cluster, namespace и user.

Для выбора контекста введите команду:

kubectl config get-contexts # показать список контекстов
kubectl config current-context # показать текущий контекст (current-context)
kubectl config use-context my-cluster-name # установить my-cluster-name как контекст по умолчанию

Для выбора того, с каким кластером DropApp необходимо взаимодействовать при помощи kubectl, выберите среди следующих команд:

kubectl config view # показать объединенные настройки kubeconfig

# использовать несколько файлов kubeconfig одновременно и посмотреть объединенную конфигурацию из этих файлов
KUBECONFIG=~/.kube/config:~/.kube/kubconfig2

kubectl config view

# получить пароль для пользователя e2e
kubectl config view -o jsonpath='{.users[?(@.name == "e2e")].user.password}'

# показать первого пользователя
kubectl config view -o jsonpath='{.users[].name}'

# получить список пользователей
kubectl config view -o jsonpath='{.users[*].name}'

# показать список контекстов
kubectl config get-contexts

# показать текущий контекст (current-context)
kubectl config current-context

# установить my-cluster-name как контекст по умолчанию
kubectl config use-context my-cluster-name

# добавить новую конфигурацию для кластера в kubeconf с базовой аутентификацией
kubectl config set-credentials kubeuser/foo.kubernetes.com --username=kubeuser --password=kubepassword

# сохранить пространство имен для всех последующих команд kubectl в этом контексте.
kubectl config set-context --current --namespace=ggckad-s2

# установить контекст, используя имя пользователя (user) и пространство имен (namespace).
kubectl config set-context gce --user=cluster-admin --namespace=foo \
&& kubectl config use-context gce

# удалить пользователя foo
kubectl config unset users.foo

Переменная среды KUBECONFIG#

Переменная среды KUBECONFIG содержит список файлов kubeconfig (файл YAML со всеми деталями кластера DropApp, сертификатом и секретным токеном для аутентификации кластера). Специальной установки для KUBECONFIG не требуется. Если KUBECONFIG отсутствует, kubectl использует файл kubeconfig по умолчанию. Например, через обращение к конфигурационному файлу: $HOME/.kube/config.

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

Конфигурация объединения файлов kubeconfig#

Чтобы просмотреть конфигурацию, введите команду:

kubectl config view

Примечание

Выходные данные могут использоваться из одного файла kubeconfig, также выходные данные могут быть результатом объединения нескольких файлов kubeconfig.

  1. Если установлен флаг --kubeconfig, используйте только указанный файл.

  2. Определите первый контекст для взаимодействия с кластером DropApp:

    • Используйте флаг --context командной строки, если контекст присутствует.

    • Используйте current-context из объединенных файлов kubeconfig.

    На этом этапе допускается незаполненный контекст.

  3. Определите кластер DropApp и пользователя (user). На этом этапе допускается неопределенность контекста.

    Определение пользователя к кластеру DropApp выполняется дважды: один раз для пользователя и один раз для кластера DropApp:

    • Используйте флаг командной строки, если контекст существует: --user или --cluster.

    • Если контекст уже заполнен, удалите пользователя или кластер DropApp из контекста.

    Примечание

    Пользователь и кластер DropApp могут быть не заполненными на этом этапе.

  4. Определите актуальную информацию о кластере DropApp для использования. На этом этапе актуальная информация не определена. Создайте атрибуты информации о кластере DropApp при помощи следующих флагов командной строки: --server, --certificate-authority, --insecure-skip-tls-verify.

    Если в объединенных файлах kubeconfig существуют какие-либо атрибуты информации о кластере DropApp, используйте их. Если местоположение сервера не определено, происходит сбой.

  5. Определите фактическую информацию о пользователе для использования. Создайте информацию о пользователе, используя те же правила создания информации о кластере DropApp:

    • Используйте флаги командной строки: --client-certificate, --client-key, --username, --password --token.

    • Используйте user поля из объединенных файлов kubeconfig.

    Примечание

    Также можно использовать значения по умолчанию.

Ссылки на файлы#

Ссылки на файлы и пути в файле kubeconfig относятся к расположению файла kubeconfig. Ссылки на файлы в командной строке относятся к текущему рабочему каталогу. Относительные пути $HOME/.kube/config хранятся относительно, а абсолютные пути хранятся абсолютно.

Прокси#

Можно настроить kubectl использование прокси для каждого кластера DropApp, используя proxy-url в файле kubeconfig, например:

apiVersion: v1
kind: Config

clusters:
- cluster:
  proxy-url: http://proxy.example.org:3128
  server: https://k8s.example.org/k8s/clusters/c-xxyyzz
  name: development

users:
- name: developer

contexts:
- context:
  name: development

Примечание

Адреса не являются существующими и приведены в качестве примера.