Пространства имен Kubernetes

Автор Itworkroom

Пространства имен (Namespace) Kubernetes предоставляют область видимости для имен объектов. Чтобы все ресурсы небыли в одном пространстве имен Kubernetes, можно разбить их на несколько пространств имен, что также позволяет использовать одни и те же имена ресурсов несколько раз (в разных пространствах имен Kubernetes).
Использование нескольких пространств имен позволяет разбить сложные системы со множеством компонентов на более мелкие отдельные группы. Они могут использоваться для разделения ресурсов в мультитенантной среде, разбивая ресурсы на среды рабочего окружения, среды разработки и контроля качества. Имена ресурсов должны быть уникальными только в пределах пространства имен. Но хотя большинство типов ресурсов организовано в пространства имен, некоторые из них – нет. Одним из них является ресурс узла (Node), который является глобальным и не привязан к одному пространству имен.
Два разных пространства имен могут содержать ресурсы с одинаковыми именами. Если несколько пользователей или групп пользователей используют один кластер Kubernetes и каждый из них управляет своим собственным набором ресурсов, каждый из них должен использовать собственное пространство имен.
Выведем список всех пространств имен в кластере:

$ kubectl get ns

Посмотреть на модули, которые принадлежат пространству имен kube-system (вместо параметра —namespace можно также использовать параметр -n):

$ kubectl get po --namespace kube-system

Создание пространства имен:

Пространство имен – это ресурс Kubernetes, как и любой другой, поэтому его можно создать, разместив файл YAML на сервере API Kubernetes или с помощью kubectl create.

Чтобы создать пространство имен из файла yaml, необходимо:

1. Создать файл для своего собственного пространства имен custom-namespace.yaml с содержимым:

apiVersion: v1
kind: Namespace
metadata:
name: custom-namespace

2. Отправить файл на сервер API Kubernetes командой:

$ kubectl create -f custom-namespace.yaml

Также можно создать пространство имен только с помощью команды kubectl create namespace:

$ kubectl create namespace custom-namespace

Управление объектами в других пространствах имен:

Для того чтобы создать ресурсы в созданном пространстве имен, добавьте запись namespace: custom-namespace в секцию metadata или укажите пространство имен при создании ресурса с помощью команды kubectl create:

$ kubectl create -f kubia-manual.yaml -n custom-namespace

После выполнения команды в кластере будут два модуля с одинаковым именем (kubia-manual). Один находится в пространстве имен default, а другой – в custom-namespace.
При выводе списка, изменении или удалении объектов в других пространствах имен необходимо передать в kubectl флаг –namespace (или -n). Если пространство имен не указано, то kubectl выполняет действие в пространстве имен по умолчанию (default), настроенном в текущем контексте kubectl. Пространство имен текущего контекста и сам текущий контекст можно изменить с помощью команд kubectl config. Для переключения на другое пространство имен можно настроить псевдоним: alias kcd=’kubectl config set-context $(kubectl config currentcontext) —namespace ‘. Затем можно переключаться между пространствами имен с помощью kcd some-namespace.
Учитывайте, что полная изоляция модулей друг от друга, зависит от того, какое решение для работы с сетью внутри Kubernetes используется.

Удаление модуля:

Удаляя модуль, вы поручаете Kubernetes завершить работу всех контейнеров, входящих в этот модуль. Kubernetes посылает сигнал SIGTERM процессу и ожидает определенное количество секунд (по умолчанию 30) для корректного завершения работы.
Команда удаления модуля:

$ kubectl delete po kubia-ssd

Команда удаления нескольких модулей:

$ kubectl delete po pod1 pod2

Удаление модулей с помощью селекторов меток:

Можно удалить с помощью селектора меток два и более модуля содержащих одну или несколько общих меток creation_method=manual.

$ kubectl delete po -l creation_method=manual

Чтобы удалить все пространство имен custom-namespace (модули будут удалены автоматически вместе с пространством имен), используйте следующую команду:

$ kubectl delete ns custom-namespace

Удалить все модули в текущем пространстве имен можно с помощью параметра –all, при этом пространство имен сохранится:

$ kubectl delete po –all

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

$ kubectl delete all –all

One comment on “Пространства имен Kubernetes

  1. Интересная статья!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *