Пространство имён полезно, когда одним и тем же кластером пользуются несколько команд. Оно используется в случаях, когда существует вероятность конфликта имён. Оно может служить виртуальной перегородкой между несколькими кластерами. Например, в кластере Kubernetes нельзя иметь поды с одинаковыми именами, но с помощью пространства имён можно виртуально разделить кластер и иметь поды с одинаковыми именами.
Ниже перечислены некоторые важные функции пространства имён.
- Оно помогает обеспечить взаимодействие между подами, использующими одно и то же пространство имён.
- Он действует как виртуальный кластер, который может располагаться поверх одного и того же физического кластера.
- Он обеспечивает логическое разделение между командами и их средами.
В этой статье мы создадим пространство имен и создадим под в только что созданном пространстве имен. Мы также увидим, как пространство имен можно установить в качестве пространства имен по умолчанию.
Предварительные условия
- Кластер Kubernetes с как минимум 1 рабочим узлом.
Если вы хотите узнать, как создать кластер Kubernetes, нажмите здесь. Это руководство поможет вам создать кластер Kubernetes с 1 мастером и 2 узлами на инстансах AWS Ubuntu 18.04 EC2.
Что мы будем делать
- Создание пространств имен
Создание пространств имен
Чтобы отобразить список всех пространств имен, доступных в кластере Kubernetes, выполните следующую команду. У вас может быть несколько пространств имен, и пространства имен могут иметь метаданные.
kubectl get namespace #Get all namespace in the cluster

Теперь попробуем создать под в конкретном пространстве имен, которое не существует.
Чтобы создать под в пространстве имен «test-env», выполните следующую команду.
kubectl run nginx --image=nginx --namespace=test-env #Try to create a pod in the namespace that does not exist.
Под не будет создан в несуществующем пространстве имен, поэтому сначала нам нужно создать пространство имен.
Чтобы создать пространство имен «test-env», выполните следующую команду (k8s create namespace).
kubectl create namespace test-env #Create a namespace
kubectl get namespace #Get a list of namespaces

Теперь у нас есть пространство имён, в котором мы хотим создать под.
Чтобы создать под в созданном нами пространстве имён, передайте команде опцию —namespace=test-env.
kubectl run nginx --image=nginx --namespace=test-env #Create a pod in the namespace.
Если вы попытаетесь получить информацию о подах, не указав пространство имен, вы не получите подробные сведения о поде.
kubectl get pods #Get a list of pods
Чтобы получить подробные сведения о поде, принадлежащем пространству имен «test-env», используйте следующую команду.
kubectl get pods --namespace=test-env #Get a list of pods in the specified namespace

Если вы хотите установить свое пространство имен в качестве пространства имен по умолчанию, чтобы не было необходимости указывать опцию пространства имен в команде, используйте следующую команду.
kubectl config set-context --current --namespace=test-env #Set default namespace
Теперь нет необходимости указывать пространство имен в команде для получения сведений о поде.
kubectl get pods #Get a list of pods from the default namespace

Чтобы переключиться на пространство имен по умолчанию, используйте следующую команду.
kubectl config set-context --current --namespace=default #Check the namespace to default
kubectl get pods #Get a list of pods

Чтобы проверить, какое пространство имен является пространством имен по умолчанию, используйте следующие команды.
kubectl config view --minify | grep namespace: #Extract the namespace from the kubernetes config file.
kubectl config set-context --current --namespace=test-env #Set default namespace in the config file.
kubectl config view --minify | grep namespace:

Чтобы проверить, какие ресурсы Kubernetes находятся в пространстве имен, выполните следующую команду.
kubectl api-resources --namespaced=true #Get Kubernetes objects which can be in a namespaces

Чтобы увидеть, какие ресурсы Kubernetes не находятся в пространстве имен, используйте следующую команду.
kubectl api-resources --namespaced=false #Get a list of Kubernetes objects that can never be in a namespace

Вы можете получить подробную информацию о пространстве имен, используя команду, указанную ниже.
kubectl get namespaces #Get a list of namespaces.
kubectl describe namespace test-env #Get details of a namespace.

Пространство имен также можно создать с помощью файла .yml.
vim namespace-using-file.yml #Create a namespace definition file

Выполните следующую команду, чтобы создать пространство имен, указанное в файле определения объекта.
kubectl create -f namespace-using-file.yml #Create a namespace using a .yml file
kubectl get namespaces #Get a list of namespaces

Когда пространство имен больше не нужно, его можно просто удалить с помощью следующей команды.
kubectl get namespaces #Get a list of namespaces
kubectl delete namespaces env-prod test-env #Delete a namespace
kubectl get namespaces #Get a list of namespaces

Используйте команду «kubectl change namespace», чтобы переключиться в другое пространство имен.
Заключение
В этой статье мы узнали о пространствах имён, создании пространства имён и изменении пространства имён по умолчанию, а также о проверке ресурсов Kubernetes, которые находятся или не находятся в пространстве имён. Мы также увидели, как объект Kubernetes, в данном случае pod, можно создать в выбранном нами пространстве имён.