Как создать пространства имен в Kubernetes
На этой странице
- Предварительные условия
- Что мы будем делать
- Создание пространств имен
- Заключение
Пространство имен полезно, когда несколько команд используют один и тот же кластер. Это используется, когда существует вероятность конфликта имен. Это может быть виртуальная стена между несколькими кластерами. Например, у нас не может быть модулей с одинаковыми именами в кластере 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
Теперь у нас есть пространство имен, в котором мы хотим создать 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, может быть создан в пространстве имен по нашему выбору.