Nhãn và Bộ chọn trong Kubernetes

theanh

Administrator
Nhân viên
Nhãn không gì khác ngoài cặp khóa-giá trị được gán cho các Đối tượng Kubernetes như Pod, Dịch vụ, v.v. Nhãn có thể được sử dụng để sắp xếp và chọn các đối tượng Kubernetes. Nhãn có thể được đính kèm vào các đối tượng tại thời điểm tạo và có thể được sửa đổi bất kỳ lúc nào. Chúng ta có thể thêm nhiều Nhãn vào các đối tượng Kubernetes.

Người dùng sử dụng các bộ chọn để chọn một tập hợp các đối tượng. Bộ chọn nhãn là nguyên thủy nhóm cốt lõi trong Kubernetes. API Kubernetes hỗ trợ hai loại bộ chọn
  1. Bộ chọn dựa trên sự bình đẳng:
    Điều này cho phép lọc theo khóa và giá trị, trong đó các đối tượng khớp phải thỏa mãn tất cả các nhãn đã chỉ định.
  2. Bộ chọn dựa trên tập hợp:
    Điều này cho phép lọc các khóa theo một tập hợp các giá trị.
Để biết thêm về Nhãn và Bộ chọn, hãy nhấp vào tại đây.

Trong bài viết này, chúng ta sẽ tạo một Pod có Nhãn và chuyển hướng các yêu cầu từ dịch vụ đến Pod bằng Selector. Chúng ta cũng sẽ thực hiện các thao tác get, delete trên Pod và Service bằng Label/Selectors trên dòng lệnh.

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

  1. Kubernetes Cluster với ít nhất 1 worker node.
    Nếu bạn muốn tìm hiểu cách tạo Kubernetes Cluster, 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 18l04 EC2 Instances.

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

  1. Tạo Pod và Dịch vụ với Nhãn và Bộ chọn
  2. Hiểu về Nhãn

Tạo Pod và Dịch vụ với Nhãn và Bộ chọn​

Để tạo Pod với nhãn, hãy tạo tệp mới và thêm nội dung sau vào nó.
Mã:
vim my-lable-demo-pod.yml
Mã:
apiVersion: v1
kind: Pod
metadata: name: label-demo-pod labels: environment: test app: nginx
spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80

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


Để tạo một dịch vụ có bộ chọn, hãy tạo một tệp có định nghĩa dịch vụ sau sử dụng mặc định không gian tên.
Mã:
vim my-selector-demo-service.yml
Mã:
apiVersion: v1
kind: Service
metadata: name: selector-demo-service namespace: default labels:
 environment: test app: nginx
spec: externalTrafficPolicy: Local ports: - name: http port: 80 protocol: TCP targetPort: 80 selector: app: nginx type: NodePort

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


Để tạo một Pod, hãy thực hiện lệnh sau lệnh.
Mã:
kubectl create -f my-lable-demo-pod.yml
Mã:
kubectl get pods

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


Để tạo một Dịch vụ, hãy thực hiện lệnh sau lệnh.
Mã:
kubectl create -f my-selector-demo-service.yml
Mã:
kubectl get service

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


Bây giờ, để kiểm tra xem Bộ chọn nhãn có hoạt động không, hãy thử truy cập dịch vụ trênNodeIP:NodePort.

Ở đây, Ip của Node của tôi là 106.210.138.189 và dịch vụ được hiển thị trên Port=30385.


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




Vì chúng ta có thể truy cập Nginx Pod bằng Dịch vụ chúng ta đã tạo, điều đó có nghĩa là Nhãn và Bộ chọn đã hoạt động.

Hiểu Nhãn​

Bây giờ, chúng ta có thể thực hiện nhiều thao tác khác nhau trên Pod và Dịch vụ chúng ta đã tạo bằng Nhãn.

Để có được các Pod khớp với nhãn chúng ta chọn, chúng ta có thể "--selector" trong lệnh như theo sau.
Mã:
kubectl get pods --selector environment=test
Mã:
kubectl get pods --selector app=nginx

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


Chúng ta cũng có thể sử dụng "-l" thay vì "--selector" để có được các Pod khớp với nhãn của chúng ta lựa chọn.
Mã:
kubectl get pods -l environment=test
Mã:
kubectl get pods -l environment=prod

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


Chúng ta thậm chí có thể thực hiện thao tác xóa pod bằng cách chỉ định nhãn. Các pod khớp với nhãn có thể bị xóa bằng các lệnh sau.
Mã:
kubectl get pods
Mã:
kubectl delete pods -l environment=test
Mã:
kubectl get pods

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


Cách chúng ta có thể xóa các Pod khớp với nhãn, chúng ta cũng có thể xóa dịch vụ.

Để xóa dịch vụ khớp với nhãn, hãy sử dụng lệnh sau. Ngoài ra, nếu không có dịch vụ nào khớp với nhãn được chỉ định trong lệnh, sẽ không có thao tác xóa nào được thực hiện đã thực hiện.
Mã:
kubectl get service
Mã:
kubectl delete service -l environment=test
Mã:
kubectl get service

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

Kết luận​

Trong bài viết này, chúng tôi đã tạo một Pod có nhãn trong đó và tạo và trỏ một dịch vụ đến các Pod khớp với nhãn đó. Chúng tôi cũng đã thấy cách xóa các Pod và Dịch vụ khớp với nhãn.
 
Back
Bên trên