Как создавать пространства имён в Kubernetes

Пространство имён полезно, когда одним и тем же кластером пользуются несколько команд. Оно используется в случаях, когда существует вероятность конфликта имён. Оно может служить виртуальной перегородкой между несколькими кластерами. Например, в кластере Kubernetes нельзя иметь поды с одинаковыми именами, но с помощью пространства имён можно виртуально разделить кластер и иметь поды с одинаковыми именами.

Ниже перечислены некоторые важные функции пространства имён.

  1. Оно помогает обеспечить взаимодействие между подами, использующими одно и то же пространство имён.
  2. Он действует как виртуальный кластер, который может располагаться поверх одного и того же физического кластера.
  3. Он обеспечивает логическое разделение между командами и их средами.

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

Предварительные условия

  1. Кластер Kubernetes с как минимум 1 рабочим узлом.
    Если вы хотите узнать, как создать кластер Kubernetes, нажмите здесь. Это руководство поможет вам создать кластер Kubernetes с 1 мастером и 2 узлами на инстансах AWS Ubuntu 18.04 EC2.

Что мы будем делать

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

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

Чтобы отобразить список всех пространств имен, доступных в кластере Kubernetes, выполните следующую команду. У вас может быть несколько пространств имен, и пространства имен могут иметь метаданные.

kubectl get namespace #Get all namespace in the cluster

get-namespaces для пространства имен Kubernetes

Теперь попробуем создать под в конкретном пространстве имен, которое не существует.

Чтобы создать под в пространстве имен «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

create-namespace

Теперь у нас есть пространство имён, в котором мы хотим создать под.

Чтобы создать под в созданном нами пространстве имён, передайте команде опцию —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

create-pod-in-the-namespace-created

Если вы хотите установить свое пространство имен в качестве пространства имен по умолчанию, чтобы не было необходимости указывать опцию пространства имен в команде, используйте следующую команду.

kubectl config set-context --current --namespace=test-env #Set default namespace

Теперь нет необходимости указывать пространство имен в команде для получения сведений о поде.

kubectl get pods #Get a list of pods from the default namespace

set-the-namespace-in-config

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

kubectl config set-context --current --namespace=default #Check the namespace to default
kubectl get pods #Get a list of pods

revert-back-to-default-namespace

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

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:

check-current-namespace

Чтобы проверить, какие ресурсы Kubernetes находятся в пространстве имен, выполните следующую команду.

kubectl api-resources --namespaced=true #Get Kubernetes objects which can be in a namespaces

resources-with-namespace

Чтобы увидеть, какие ресурсы Kubernetes не находятся в пространстве имен, используйте следующую команду.

kubectl api-resources --namespaced=false #Get a list of Kubernetes objects that can never be in a namespace

resources-without-namespace

Вы можете получить подробную информацию о пространстве имен, используя команду, указанную ниже.

kubectl get namespaces #Get a list of namespaces.
kubectl describe namespace test-env #Get details of a namespace.

describe-namespace

Пространство имен также можно создать с помощью файла .yml.

vim namespace-using-file.yml #Create a namespace definition file

create-namespace-using-yml-file

Выполните следующую команду, чтобы создать пространство имен, указанное в файле определения объекта.

kubectl create -f namespace-using-file.yml #Create a namespace using a .yml file
kubectl get namespaces #Get a list of namespaces

get-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

delete-namespaces

Используйте команду «kubectl change namespace», чтобы переключиться в другое пространство имен.

Заключение

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

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

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