Cách tạo Namespace trong Kubernetes

theanh

Administrator
Nhân viên
Không gian tên hữu ích khi nhiều nhóm sử dụng cùng một cụm. Điều này được sử dụng khi có khả năng xảy ra xung đột tên. Nó có thể là một bức tường ảo giữa nhiều cụm. Ví dụ: chúng ta không thể có các pod có cùng tên trong một Cụm Kubernetes nhưng khi sử dụng Không gian tên, chúng ta có thể chia Cụm ảo và có các pod có cùng tên.

Sau đây là một số chức năng quan trọng của Không gian tên.
  1. Nó giúp giao tiếp giữa các pod bằng cách sử dụng cùng một không gian tên.
  2. Nó hoạt động như một cụm ảo có thể nằm trên cùng một cụm vật lý.
  3. Nó cung cấp sự phân tách hợp lý giữa các nhóm và môi trường của họ.
Trong bài viết này, chúng ta sẽ tạo một không gian tên và tạo một pod trong không gian tên mới được tạo. Chúng ta cũng sẽ xem cách một không gian tên có thể được thiết lập làm không gian tên mặc định.

Điều kiện tiên quyết​

  1. Cụm Kubernetes có ít nhất 1 nút worker.
    Nếu bạn muốn tìm hiểu cách tạo Cụm Kubernetes, hãy nhấp vào đây. Hướng dẫn này sẽ giúp bạn tạo cụm Kubernetes với 1 Master và 2 Node trên AWS Ubuntu 18.04 EC2 Instances.

Những gì chúng ta sẽ làm​

  1. Tạo Namespace

CreateNamespaces​

Để liệt kê tất cả các namespace có sẵn trong Kubernetes Cluster, hãy thực hiện lệnh sau Bạn có thể có nhiều namespace và namespace có thể có siêu dữ liệu namespace.
Mã:
kubectl get namespace #Get all namespace in the cluster

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22433%22%3E%3C/svg%3E


Bây giờ chúng ta hãy thử tạo một pod trong một không gian tên cụ thể không tồn tại.

Để tạo một pod trong không gian tên "test-env", hãy thực hiện lệnh sau.
Mã:
kubectl run nginx --image=nginx --namespace=test-env #Try to create a pod in the namespace that does not exist.
Pod sẽ không được tạo trong không gian tên không tồn tại do đó Đầu tiên chúng ta cần tạo một không gian tên.

Để tạo không gian tên "test-env", hãy thực hiện lệnh sau (k8s create namespace).
Mã:
kubectl create namespace test-env #Create a namespace
Mã:
kubectl get namespace #Get a list of namespaces

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22376%22%3E%3C/svg%3E


Bây giờ chúng ta có một không gian tên mà chúng ta muốn tạo một pod.

Để tạo một pod trong không gian tên, chúng ta đã tạo tùy chọn truyền --namespace=test-env vào lệnh.
Mã:
kubectl run nginx --image=nginx --namespace=test-env #Create a pod in the namespace.
Nếu bạn cố gắng lấy pod mà không chỉ định không gian tên bạn sẽ không nhận được thông tin chi tiết về thepod.
Mã:
kubectl get pods #Get a list of pods
Để nhận thông tin chi tiết về thepod thuộc không gian tên "test-env", hãy sử dụng lệnh sau.
Mã:
kubectl get pods --namespace=test-env #Get a list of pods in the specified namespace

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22226%22%3E%3C/svg%3E


Nếu bạn muốn đặt không gian tên của mình làm không gian tên mặc định để không cần phải chỉ định tùy chọn không gian tên trong lệnh, hãy sử dụng lệnh sau.
Mã:
kubectl config set-context --current --namespace=test-env #Set default namespace
Bây giờ không cần phải chỉ định không gian tên trong lệnh để biết thông tin chi tiết về thepod.
Mã:
kubectl get pods #Get a list of pods from the default namespace

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22148%22%3E%3C/svg%3E


Để chuyển sang không gian tên mặc định, hãy sử dụng lệnh sau lệnh.
Mã:
kubectl config set-context --current --namespace=default #Check the namespace to default
Mã:
kubectl get pods #Get a list of pods

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22148%22%3E%3C/svg%3E


Để kiểm tra không gian tên mặc định, hãy sử dụng các lệnh sau.
Mã:
kubectl config view --minify | grep namespace: #Extract the namespace from the kubernetes config file.
Mã:
kubectl config view --minify | grep namespace:

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22169%22%3E%3C/svg%3E


Kiểm tra xem tài nguyên Kubernetes nào là không gian tên, hãy thực hiện lệnh sau.
Mã:
kubectl api-resources --namespaced=true #Get Kubernetes objects which can be in a namespaces

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22480%22%3E%3C/svg%3E


Để xem tài nguyên Kubernetes nào không nằm trong không gian tên, hãy sử dụng lệnh sau lệnh.
Mã:
kubectl api-resources --namespaced=false #Get a list of Kubernetes objects that can never be in a namespace

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22353%22%3E%3C/svg%3E


Bạn có thể lấy thông tin chi tiết về không gian tên bằng lệnh đã đề cập bên dưới.
Mã:
kubectl describe namespace test-env #Get details of a namespace.

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22442%22%3E%3C/svg%3E


Một không gian tên cũng có thể được tạo bằng cách sử dụng tệp .yml.
Mã:
vim namespace-using-file.yml #Create a namespace definition file

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22237%22%3E%3C/svg%3E


Thực hiện lệnh sau để tạo không gian tên được chỉ định trong định nghĩa đối tượng tập tin.
Mã:
kubectl create -f namespace-using-file.yml #Create a namespace using a .yml file
Mã:
kubectl get namespaces #Get a list of namespaces

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22375%22%3E%3C/svg%3E


Khi bạn không còn cần không gian tên của mình nữa, bạn có thể xóa nó bằng lệnh sau.
Mã:
kubectl get namespaces #Get a list of namespaces
Mã:
kubectl get namespaces#Get a list of namespaces

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22578%22%3E%3C/svg%3E


Sử dụng lệnh "kubectl change namespace" để chuyển sang một không gian tên khác.

Kết luận​

Trong bài viết này, chúng ta đã tìm hiểu về không gian tên, cách tạo không gian tên và thay đổi không gian tên mặc định, kiểm tra các tài nguyên Kubernetes nằm trong và không nằm trong không gian tên. Chúng ta cũng đã thấy cách tạo một đối tượng Kubernetes, ở đây là pod, trong không gian tên mà chúng ta lựa chọn.
 
Back
Bên trên