Поиск по сайту:

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


На этой странице

  1. Предварительные условия
  2. Что мы будем делать
  3. Создание пространств имен
  4. Заключение

Пространство имен полезно, когда несколько команд используют один и тот же кластер. Это используется, когда существует вероятность конфликта имен. Это может быть виртуальная стена между несколькими кластерами. Например, у нас не может быть модулей с одинаковыми именами в кластере 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

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

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

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

Чтобы создать модуль в пространстве имен, которое мы создали, передайте параметр --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, может быть создан в пространстве имен по нашему выбору.